什么是異常?
exception一詞是“exceptional event”這一短語的簡寫。
定義:異常是在程序執行期間發生的事件,它會破壞程序指令的正常流程。
當方法中發生錯誤時,該方法會創建一個對象并將其交給運行時系統,該對象稱為異常對象,包含有關錯誤的信息,包括錯誤發生時的類型和程序狀態,創建異常對象并將其交給運行時系統稱為拋出異常。
在方法拋出異常后,運行時系統會嘗試查找處理它的內容,處理異常的可能的“內容”的集合是已被調用以獲取發生錯誤的方法的有序方法列表,方法列表稱為調用堆棧(請參見下圖)。
運行時系統在調用堆棧中搜索包含可處理異常的代碼塊的方法,這段代碼稱為異常處理程序,搜索從發生錯誤的方法開始,然后按照調用方法的相反順序遍歷調用堆棧,找到適當的處理程序后,運行時系統會將異常傳遞給處理程序,如果拋出的異常對象的類型與處理程序可以處理的類型匹配,則認為異常處理程序是合適的。
所選擇的異常處理程序被稱為捕獲異常,如果運行時系統窮舉搜索調用堆棧上的所有方法而沒有找到適當的異常處理程序,如下圖所示,則運行時系統(以及程序)終止。
使用異常來管理錯誤與傳統的錯誤管理技術相比具有一些優勢,你可以在“異常優勢”部分了解更多信息。
上一篇:管理源文件和類文件 下一篇:捕獲或指定要求文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74037.html
Java? 教程 Java教程是為JDK 8編寫的,本頁面中描述的示例和實踐沒有利用在后續版本中引入的改進。 Java教程是希望使用Java編程語言創建應用程序的程序員的實用指南,其中包括數百個完整的工作示例和數十個課程,相關課程組被組織成教程。 覆蓋基礎知識的路徑 這些教程以書籍的形式提供,如Java教程,第六版,前往Amazon.com購買。 入門 介紹Java技術和安裝Java開發軟件并使用...
捕獲或指定要求 有效的Java編程語言代碼必須遵守捕獲或指定需求,這意味著可能拋出某些異常的代碼必須包含以下任一項: 捕獲異常的try語句,try必須為異常提供處理程序,如捕獲和處理異常中所述。 一種方法,指定它可以拋出異常,該方法必須提供一個throws子句,列出異常,如通過方法拋出指定異常中所述。 不符合捕獲或指定要求的代碼將無法編譯。 并非所有異常都受捕獲或指定要求的約束,為了理解原因,...
異常的優點 現在你已經知道了什么是異常以及如何使用它們,現在是時候了解在程序中使用異常的優勢了。 優點1:將錯誤處理代碼與常規代碼分開 異常提供了從程序的主邏輯中分離異常發生時應該做什么的細節的方法,在傳統的編程中,錯誤檢測、報告和處理通常會導致混亂的意大利面代碼,例如,考慮這里的偽代碼方法將整個文件讀入內存。 readFile { open the file; determine...
如何拋出異常 在捕獲異常之前,某些代碼必須拋出一個,任何代碼都可能拋出異常:你的代碼,來自其他人編寫的包中的代碼,例如Java平臺附帶的包或Java運行時環境,無論拋出什么異常,它總是使用throw語句拋出。 你可能已經注意到,Java平臺提供了許多異常類,所有類都是Throwable類的后代,并且所有類都允許程序區分在程序執行期間可能發生的各種類型的異常。 你還可以創建自己的異常類來表示你編寫的...
摘要:挺多人咨詢的,異常處理用切面注解去實現去全局異常處理。全局異常處理類,代碼如下代碼解析如下抽象類是用來處理全局錯誤時進行擴展和實現注解標記的切面排序,值越小擁有越高的優先級,這里設置優先級偏高。 本文內容 為什么要全局異常處理? WebFlux REST 全局異常處理實戰 小結 摘錄:只有不斷培養好習慣,同時不斷打破壞習慣,我們的行為舉止才能夠自始至終都是正確的。 一、為什么要全局...
閱讀 2294·2021-09-22 15:27
閱讀 3166·2021-09-03 10:32
閱讀 3491·2021-09-01 11:38
閱讀 2493·2019-08-30 15:56
閱讀 2206·2019-08-30 13:01
閱讀 1531·2019-08-29 12:13
閱讀 1410·2019-08-26 13:33
閱讀 885·2019-08-26 13:30