




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、accp v4.0第五章第五章異異 常常accp v4.02回顧q繼承及其java實現(xiàn)q多態(tài)及其java實現(xiàn)q訪問修飾符對類成員的訪問限制q方法修飾符:static、final、abstractaccp v4.03目標q理解異常的概念q運用 try 塊、catch 塊和 finally 塊處理異常q運用多重 catch 塊處理異常q運用嵌套 try/catch 塊處理異常q運用關(guān)鍵字 throw 和 throws 處理異常q運用java編寫和使用自定義異常accp v4.04什么是異常?public class exceptionraised public exceptionraised()
2、public int calculate( int operand1, int operand2) int result = operand1 / operand2; return result; public static void main(string args) exceptionraised obj = new exceptionraised(); int result = obj.calculate(9, 0); system.out.println(result); 異常情況異異 常常程序突然終止并將控制交給操作系統(tǒng)在運行時發(fā)生的錯誤在運行時發(fā)生的錯誤 accp v4.05if
3、b is zero go to errorc = a / bprint cgo to exiterror: 處理異常的塊 “以零作除數(shù),代碼導致錯誤” display exit:end處理異常 2-1處理運行時錯誤的偽代碼accp v4.06手動引發(fā)異常指定由方法引發(fā)的異常 tryfinallycatchthrowsthrow處理異常 2-2要監(jiān)控的程序語句包含在此塊中要監(jiān)控的程序語句包含在此塊中以合理的方式以合理的方式捕獲和處理異常捕獲和處理異常釋放資源等釋放資源等accp v4.07java異常類 文件結(jié)束文件結(jié)束eofexception找不到文件找不到文件filenotfoundexce
4、ptioni/o 異常的根類異常的根類ioexception數(shù)字轉(zhuǎn)化格式異常,比如字符串到數(shù)字轉(zhuǎn)化格式異常,比如字符串到 float 型數(shù)字的轉(zhuǎn)換無效型數(shù)字的轉(zhuǎn)換無效numberformatexception不能加載所需的類不能加載所需的類classnotfoundexception方法接收到非法參數(shù)方法接收到非法參數(shù)illegalargumentexception數(shù)組大小小于或大于實際的數(shù)組大小數(shù)組大小小于或大于實際的數(shù)組大小arrayindexoutofboundexception嘗試訪問嘗試訪問 null 對象成員對象成員nullpointerexception許多許多 java.lan
5、g 異常的基類異常的基類runtimeexception異常層次結(jié)構(gòu)的根類異常層次結(jié)構(gòu)的根類exception算術(shù)錯誤情形,如以零作除數(shù)算術(shù)錯誤情形,如以零作除數(shù)arithmeticexception線程中斷線程中斷interruptedexception說說 明明異異 常常accp v4.08try 和 catch 塊 2-1trycatch異常異常執(zhí)行 catch 后程序繼續(xù)正常運行程序控制 引發(fā)代碼塊單單 元元accp v4.09try 和 catch 塊 2-2演示:示例 1q try 和 catch 塊的用法class exceptionraised /* 構(gòu)造方法. */ publ
6、ic exceptionraised() /* * 這個方法運行時將會產(chǎn)生一個異常. * param operand1 除法中的分子 * param operand2 除法中的分母 * return int 返回除法的結(jié)果 */ public int calculate(int operand1, int operand2) int result = operand1 / operand2; return result; public class arithmeticexception /* 構(gòu)造方法. */ public arithmeticexception() public static
7、 void main(string args) exceptionraised obj = new exceptionraised(); try /* 定義變量 result 以存儲結(jié)果. */ int result = obj.calculate(9, 0); system.out.println(result); catch (exception e) system.err.println(“發(fā)生異常: + e.tostring(); e.printstacktrace(); accp v4.010finally 塊無異常異常try、catch 和 finally 塊的執(zhí)行流程accp v
8、4.011異常處理塊的一般形式try / 要監(jiān)控錯誤的代碼塊 methodgeneratingexception(); catch (exception e) / exception e 的異常處理程序 finally / 在 try 結(jié)束前要執(zhí)行的代碼塊 cleanup();accp v4.012多重 catch 塊3-1q 一段代碼可能會生成多個異常q 當引發(fā)異常時,會按順序來查看每個 catch 語句,并執(zhí)行第一個類型與異常類型匹配的語句q 執(zhí)行其中的一條 catch 語句之后,其他的 catch 語句將被忽略 try . catch(arrayindexoutofboundsexcep
9、tion e) catch(exception e) accp v4.013exceptionarithmeticexceptionnullpointerexceptionobjectthrowableerrorthreaddeathsqlexceptionruntimeexceptionnumberformatexception異常類的層次結(jié)構(gòu)qthrowable 具有兩個子類,它們是qexception:處理用戶程序應當捕獲的異常情況qerror:error 類的異常為內(nèi)部錯誤,因此在正常情況下不期望用戶的程序捕獲它們 awterroraccp v4.014多重 catch 塊3-2q 使
10、用多重 catch 語句時,異常子類一定要位于異常父類之前 try . catch(exception e) catch(arrayindexoutofboundsexception e) accp v4.015多重 catch 塊3-3演示:示例 2q 多重catch的使用class exceptioncode /*構(gòu)造方法.*/ protected exceptioncode() /*這個方法將將零作除數(shù).*/ public void calculate() try int num = 0; int num1 = 42 / num; catch (exception e) system.o
11、ut.println(父類異常 catch 子句); catch (arithmeticexception ae) / 錯誤 不能到達的代碼 system.out.println(這個子類的父類是 + exception 類,且不能到達); class unreachablecode /*構(gòu)造方法.*/ protected unreachablecode() /* * 類和應用程序的唯一進入點. * param args 字符串參數(shù)的數(shù)組 */ public static void main(string args) exceptioncode obj = new exceptioncode(
12、); obj.calculate(); accp v4.016嵌套 try catch 塊 如果內(nèi)層 try 沒有相應的 catch,則檢查外層 catch class nestedexception /* 構(gòu)造方法。 */ protected nestedexception() /* 這個方法檢測數(shù)字的格式。 * param argument 用于存儲 args 的值。 */ public test(string argumnet) try int num = integer.parseint(args1); /* 嵌套 try 塊。 */ try int numvalue = intege
13、r.parseint(args0); system.out.println(“args0 + “的平方是 + numvalue * numvalue); catch (numberformatexception nb) system.out.println(“不是一個數(shù)字! ); catch (arrayindexoutofboundsexception ne) system.out.println(“請輸入數(shù)字!); /*main方法*/ public static void main(string args) nestedexception obj = new nestedexceptio
14、n(); obj.test(args0); 因此需要嵌套異常處理程序accp v4.017使用 throw 和 throws 2-1 語句語句 3停止停止異常處理程序可執(zhí)行程序語句可執(zhí)行程序語句語句語句 1語句語句 2accp v4.018使用 throw 和 throws 2-2處理異常被調(diào)用的方法被調(diào)用的方法調(diào)用方法調(diào)用方法處理異常可能會導致異常防止被調(diào)用的方法出現(xiàn)異常并處理異常type calledmethod-name(parameter-list) throws exception-list / body of methodtype callingmethod-name try /
15、statements calledmethod-name();catch(exception e) /statementsaccp v4.019用戶自定義異常 2-1q自定義異常概念q使用自定義異常的時候qjavaapi提供的內(nèi)置異常不一定總能捕獲程序中發(fā)生的所有錯誤。有時會需要創(chuàng)建用戶自定義異常 q自定義異常需要繼承exception 及其子類accp v4.020class arraysizeexception extends negativearraysizeexception /* 構(gòu)造方法。 */ arraysizeexception() super(“您傳遞的數(shù)組大小非法); 用戶
16、自定義異常 2-2示例: 示例 6q 創(chuàng)建用戶自定義異常q 繼承 exception 或其子類 class exceptionclass exceptionclass(int val) size = val; try checksize(); catch (arraysizeexception e) system.out.println(e); /* 聲明變量以存儲數(shù)組的大小和元素. */ private int size; private int array; /* 檢查數(shù)組長度的方法. * throws 一個 arraysizeexception */ public void checks
17、ize() throws arraysizeexception if (size 0) throw new arraysizeexception(); array = new int3; for (int count = 0; count 3; count+) arraycount = count + 1; class userdefinedexceptions /* 構(gòu)造方法. */ protected userdefinedexceptions() /* * 類和應用程序的唯一入口點. * param arg 字符串參數(shù)的數(shù)組 */ public static void main(string arg) exceptionclass obj = new excepti
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年漁家傲試題及答案
- 2025年專升碩英語試題及答案
- 5年級下冊英語第5單元
- 嘉興風機吊裝施工方案
- 登鸛雀樓寫了詩人的所見
- arm芯片霍爾信號
- 2025年天然植物纖維及人造纖維編織工藝品合作協(xié)議書
- 2025年內(nèi)蒙古通遼市單招職業(yè)傾向性測試題庫1套
- 2025年重慶青年職業(yè)技術(shù)學院單招職業(yè)傾向性測試題庫及參考答案1套
- 2025年攀枝花攀西職業(yè)學院單招職業(yè)技能測試題庫審定版
- C#經(jīng)典教材(打印版)
- 初軋機設(shè)計論文
- 第二章政治文化與政治發(fā)展
- 藝術(shù)生文化課承諾班本科協(xié)議書
- 新能源汽車三電系統(tǒng)詳解(圖文并茂)
- 短視頻營銷對消費者購買行為的影響因素研究
- 2016版公路工程施工監(jiān)理規(guī)范
- 監(jiān)理大綱合同信息管理
- 慢性阻塞性肺病的用藥指導
- 黃芩種植時間什么時候最好 黃芩播種技術(shù)
- GB/T 41000-2021聚碳酸酯(PC)飲水罐質(zhì)量通則
評論
0/150
提交評論