第10章例外处理.pptVIP

  • 3
  • 0
  • 约6.36千字
  • 约 77页
  • 2017-03-04 发布于天津
  • 举报
第10章例外处理

第10章 例外處理 Java 2 程式設計入門與應用 目錄 10-1 認識例外處理機制 10-2 拋出例外 10-3 自訂例外類別 溫故知新 自我突破習題 10-1 認識例外處理機制 10-1.1 檢查錯誤的第二道防線 10-1.2 例外處理類別 10-1.3 建立例外處理 10-1.4 同時處理多個例外狀況 前言: 例外處理(Exception handling)機制是物件導向程式設計的一環,在程式語言中,所有的例外都是以類別(Class)型別存在,因此學習物件導向程式設計時,當然不能忽略例外處理類別的應用技巧。 10-1.1 檢查錯誤的第二道防線 程式開發過程中難免會發生程式碼錯誤的情況,而經由不斷的修正使錯誤降至最低的程度。 程式語言的錯誤可分為下面三種-1: 語法錯誤:在執行程式時,會隨時檢查程式碼中的語法是否發生錯誤,這是檢查程式碼錯誤的第一道防線,例如下面的程式碼: 上述程式碼必須先宣告變數x,否則會出現下面的錯誤訊息。 程式語言的錯誤可分為下面三種-2: 執行時期(Run-Time)錯誤:程式語法沒有出現錯誤,且編譯期間無錯誤產生,但是在程式執行時卻無法正常執行,例如下面的程式碼: 程式語言的錯誤可分為下面三種-3: 上述程式碼必須將for迴圈的條件式修改為(int i=0;i10;i++),否則執行時會出現下面的錯誤訊息(因為i值超過陣列宣告的範圍),此訊息是例外處理機制拋出來的錯誤訊息,提示程式碼執行時期發生錯誤。 因此,可以說例外處理機制是檢查程式錯誤的第二道防線。 程式語言的錯誤可分為下面三種-4: 在撰寫程式時,常見的執行時期例外錯誤有下面幾種: 程式語言的錯誤可分為下面三種-5: 邏輯錯誤:由於程式設計師的疏忽與認知不同,在設計程式時邏輯思考的錯誤,這類的錯誤編譯器無法自動偵測出來! 例如下面的程式碼: 程式語言的錯誤可分為下面三種-6: 上述程式碼執行過程無誤,結果是“256與80的最大公因數:80”,但仔細計算,就會發現256與80的最大公因數是16,並非80。 原來是gcd函式的邏輯設計錯誤,應該將“gcd(y,y%x)”修改為“gcd(y,x%y)” ,原本的程式雖然照樣會顯示執行結果,但答案並非設計者想要的,這是很嚴重的錯誤!設計程式時應該特別注意,以免日後亡羊補牢。 10-1.2 例外處理類別 在介紹如何建立例外處理之前,必須先了解Java有哪些例外處理類別 。 Java的標準例外處理類別都定義在java.lang函式庫的Error與Exception類別中,其架構圖如下所示: 關於上述架構圖的說明如下: 圖中所有例外處理類別都繼承於Object基礎類別的Throwble類別。 Error類別:執行程式發生嚴重的錯誤,造成程式很難復原時,會自動拋出的例外處理,撰寫程式碼時,不可以拋出這個類別的例外處理。常見的子類別有LinkageError、ThreadDeath與VirtualMachineError等,最典型的錯誤情況就是耗盡記憶體,事實上是無法復原程式的。 Exception類別:包含一般情況下會發生的例外處理。當發生這類型的錯誤時,只要在程式碼中拋出例外處理,就可以解決問題,常見的類別有IOException(檔案處理的例外類別)與RuntimeException。 RuntimeException類別:程式執行時期會發生的例外處理。這類型的例外錯誤是程式本身設計的問題,所以即使沒有在程式碼拋出這類型的例外處理,程式仍然可以編譯成功,等到執行程式時才會發生錯誤。 下面是RuntimeException類別中常用的例外處理類別說明: 10-1.3 建立例外處理 在10-1.2小節中,例外處理機制會於第(1)和(2)類程式碼發生錯誤時,中斷程式碼的執行。 但在執行階段出現錯誤時,例如需要由使用者輸入資料、存取檔案或是透過網路傳遞訊息等情況時,雖然程式碼中沒有任何錯誤,但執行時仍然可能發生錯誤,下面將說明處理錯誤的方式。 利用判斷式: 俗語說:「未雨綢繆」,意指在事情尚未發生前,預先做好準備,妥善安排要如何處理。 在設計程式時,也應該先想好各種突發狀況的解決方法,要避免發生這類的錯誤,可以撰寫判斷式來處理,例如下面的程式碼: 上述程式碼第5行的除數b不得為0,所以在第6~9行加入if判斷式,處理當除數等於0時,要傳送的錯誤訊息。 完成後,執行程式的畫面顯示如下: 利用例外處理機制: 雖然可以利用判斷式來處理錯誤狀況,但是當程式較龐大時,例如要輸入多次資料、開啟多次檔案等,每執行一次就必須呼叫一次判斷式,這樣似乎太麻煩了,而且防不勝防,最簡單的方式就是在程式中建立例外處理機制。 定義例外處理機制的語法如下: 上述語法說明如下-1: try區塊中的程式碼會被檢查是否發

文档评论(0)

1亿VIP精品文档

相关文档