- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
精彩Excel 2002中文版 吳目誠編著 B3 例外處理 目錄 B3-1 認識例外處理機制 B3-2 拋出例外的技巧 B3-3 自訂例外處理類別 B3-4 練習與實作 B3-1 認識例外處理機制 檢查 錯誤的第二道防線 建立例外處理機制 同時 處理多個例外情況 例外處理類別 檢查錯誤的第二道防線: 已經撰寫完成的程式碼,經由編譯程式(compiler,例如javac)可以找出程式的語法是否發生錯誤,這是檢查程式錯誤的第一道防線。 例如下面的程式碼: 進行編譯時,會檢查出如下的錯誤: 只要加上一行宣告式,錯誤就可以修正,程式碼如下: int i=7; 執行程式時,卻可能仍然出現錯誤,這種錯誤稱為執行時期錯誤,例如下面的程式碼: 執行時卻出現如下的錯誤:(因為i值超出陣列宣告的範圍) 解讀例外處理機制說明: 例外處理機制可以幫助我們找出程式碼執行時期的錯誤,進而提供處理錯誤的策略。因此,Java的例外處理機制可以說是檢查程式錯誤的第二道防線。 解讀上述例外處理機制輸出的訊息,只要將for迴圈中的數值12改為10,就可以修正程式碼的錯誤。 建立例外處理機制: 在執行階段出現錯誤時,雖然有些情況(例如前一小節的程式碼)可以根據錯誤訊息,修正程式的錯誤,但卻不適用於大多數情況。 需要由使用者輸入資料、需要存取檔案、或是透過網路傳遞訊息等情況時,雖然程式碼中沒有任何錯誤,但是執行時仍然可能發生錯誤。 例如下面的程式碼: 編譯、執行與輸出畫面如下: 但執行時若忽略參數,則會出現如下的錯誤: Java的例外處理機制的語法如下: 例外處理機制說明: 例外處理機制包含try、catch和finally等三個部分。 在try區域中的程式碼將被檢查是否發生例外,當try區域中的程式碼發生例外時,會開始執行catch區域,catch區域首先會判斷是否發生想要捕捉的例外情況,若是則開始執行catch區域中的程式碼。 不論try區域是否發生錯誤,或catch區域是否捕捉到例外情況,一定會執行finally區域的程式碼。 下面就是加入例外處理機制的程式碼: 輸入正確參數,則顯示“程式正確執行! ”的訊息,若忽略參數,會顯示“程式發生錯誤! ”的訊息,畫面顯示如下: 同時處理多個例外情況: 在前一小節的例外處理機制中,catch區域僅捕捉ArrayIndexOutOfBoundsException類別的例外,若發生其他例外情況,則會出現錯誤訊息,同時中斷程式的執行。 只要在catch區域設定需要處理的例外類別,就可以同時處理多個例外情況。 例如下面的程式碼: 若沒有輸入參數,則顯示“沒有輸入參數”訊息,而輸入參數“abc”,則顯示“輸入的參數不是數值型態!”訊息: 例外處理類別: 例外類別分為Exception和Error等兩大類,繼承自throwable類別,而throwable類別則繼承自Object類別。 Error類別是專門用來處理嚴重的程式執行錯誤,通常這種錯誤無法透過程式碼來捕捉。 Exception類別則可以透過程式碼捕捉的錯誤。 關係圖如下: Exception衍生的類別說明: 大多數Exception衍生的類別,在可能拋出例外的地方,您必須加入程式碼來處理這些例外,否則將無法通過程式編譯工作。 例如使用讀取命令時(readLine),就必須輸入撰寫處理IOException拋出例外的程式碼。 RuntimeException是最為特別的類別,程式設計師可以自由決定,是否要撰寫程式碼來處理RuntimeException類別產生的例外,若沒有處理例外,編譯程式將允許您忽略它 RuntimeException包括下面的子類別(衍生類別): ArthmeticException(無效運算式) ArrayStoreException(陣列型態與物件型態不合) ClassCastException(無效的類別轉換) IllegalArgumentException(參數類型不合) IllegalMonitorStateException(監視不屬於自己的物件) IndexOutOfBoundsException(超過陣列的索引值) NegativeArraySizeException(定義負數陣列) NullPointerException(空指標) SecurityException(發生危害安全的動作) llegalArgumentException類別又衍生出下面兩個子類別: IllegalThreadStateException NumberFormatException IndexOutOfBoundsException類別又衍生出下面兩個子類別: ArrayIndexOutOfBoundsException Stri
文档评论(0)