Java程式处理例外状况的方式.PPT

  1. 1、本文档共142页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java程式处理例外状况的方式

第 14 章 例外處理 本章提要 14-1 甚麼是例外? 14-2 try/catch/finally 敘述 14-3 抛出例外 14-4 自訂例外類別 14-5 綜合演練 前言 在整個程式的生命週期中, 難免會發生一些問題或錯誤, 大概可分為以下幾類: 編譯時期錯誤:這是在程式開發過程中所發生的, 例如初學者最常遇到的語法錯誤就屬於其中一。像是寫程式時忘了在敘述後面加分號、變數名稱打錯等等, 如此一來在編譯程式時就無法編譯成功, 因此稱之為編譯時期錯誤 (compiler-time error)。 前言 邏輯錯誤:這種錯誤是指程式雖能編譯成功、也能正常執行, 但執行的結果卻不是我們所預期的。 換言之是程式的邏輯有問題所產生的錯誤, 例如您要寫一個程式計算球體體積, 但將計算公式轉成程式的形式時, 不小心打錯了, 導致計算結果不正確, 這就是一種邏輯錯誤。 前言 執行時期錯誤:此錯誤也是在程式編譯成功後, 於執行階段發生的錯誤, 但執行時期錯誤 (run-time error) 是指程式本身邏輯沒有問題, 但在執行時發生當初設計程式時, 未預期的狀況, 導致程式無法正常執行的情形。 舉例來說, 如果程式中有除法運算, 但用來當除數的整數變數其值為 0 (可能是使用者輸入錯誤), 就會使程式發生除以 0 的錯誤。 前言 本章要介紹的例外處理, 就是要處理執行時期錯誤, 讓我們的程式即使遇到突發狀況時, 也能執行完成。 14-1 甚麼是例外? 簡單的說, 程式執行時期, 所發生的不可預期錯誤就可稱為例外 (Exception)。發生例外時, Java 程式將會不正常中止, 輕則讓使用者覺得程式有問題、重則導致使用者的資料毀損/ 喪失。為了讓 Java 程式設計人員能設計出安全可靠 (robust) 的程式, 不會因例外發生, 程式就什麼事都不能做, 因此 Java 語言特別內建了例外處理的功能。 有狀況:引發例外 在第二章曾介紹過, Java 程式是在 Java 虛擬機器 (JVM) 中執行的。在預設的情況下, 當程式執行時發生例外, JVM 就會攔截此例外狀況, 並拋出 (throw) 此例外事件。 例外案例之一:使用者輸入錯誤 使用者輸入非程式預期資料, 而導致例外, 是典型的例外案例。 在前幾章我們都有使用到由鍵盤取得使用者輸入的範例程式, 而只要我們故意輸入非程式所需的資料, 就會發生例外。 例如下面這個第 6 章的畫三角形範例: 例外案例之一:使用者輸入錯誤 例外案例之一:使用者輸入錯誤 例外案例之一:使用者輸入錯誤 例外案例之一:使用者輸入錯誤 由於第 13 行呼叫的 Integer.parseInt() 方法只能解讀以數字構成的字串, 而我們故意輸入文字或是有小數點的數字, 就會導致程式無法解讀, 而引發例外 (另一種說法是:拋出例外)。 此時 Java 會顯示一連串例外的相關訊息, 並中止程式執行 (另一說法是執行緒被終止, 關於執行緒請見下一章), 因此第 15 行以下的程式也不會執行到。 例外案例之一:使用者輸入錯誤 在例外訊息中, 可看到例外所屬的 『例外類別』: 例外案例之二:程式設計不當 另一種可能引發例外的情況是程式設計不當, 例如在第 8 章介紹陣列時提過, 當程式中使用的元素索引碼超出陣列範圍, 就會產生例外: 例外案例之二:程式設計不當 例外案例之二:程式設計不當 從執行結果我們可以看到, 當程式執行到 i 的值等於 4 的時候, 由於 4 已超出陣列元素的索引範圍, 所以執行到第 8 行程式時, 存取 a[i] (相當於 a[4]) 的動作就會引發例外。 例外案例之二:程式設計不當 同樣的, 這個範例也是在 Java 輸出一長串的訊息後, 程式就停止執行了, 因此第 10 行的敘述也不會被執行到。 這個範例所引發的例外, 所屬的類別和前一個例子也不同: Java 程式處理例外狀況的方式 例外處理流程 例外類別 例外處理流程 當程式執行時發生了例外, Java 會拋出 (throw) 例外, 也就是將例外的相關資訊包裝在一個例外物件之中, 然後丟給目前執行的方法來處理, 此時會有兩種狀況: 如果方法中沒有處理這個例外的程式碼, 則轉向呼叫者 (呼叫該方法的上一層方法) 尋找有無處理此例外的程式碼。若一直找到最上層的 main() 都沒有處理這個例外的程式碼發生時, 該程式將會停止執行。 例外處理流程 若程式中有處理這個例外的程式碼, 則程式流程會跳到該處繼續執行 (詳細流程請參見下一節說明)。 以前面陣列索引碼超出範圍的例子而言, 該例外是在 main() 方法中拋出的, 所以 Java 會看 main() 中是否有處理該例外的處理程式, 以便將例外物件拋給它處理。 例外處理流程 不過在我

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档