exception
一詞是「exceptional event」這一短語的簡寫。segmentfault
定義:異常是在程序執行期間發生的事件,它會破壞程序指令的正常流程。
當方法中發生錯誤時,該方法會建立一個對象並將其交給運行時系統,該對象稱爲異常對象,包含有關錯誤的信息,包括錯誤發生時的類型和程序狀態,建立異常對象並將其交給運行時系統稱爲拋出異常。spa
在方法拋出異常後,運行時系統會嘗試查找處理它的內容,處理異常的可能的「內容」的集合是已被調用以獲取發生錯誤的方法的有序方法列表,方法列表稱爲調用堆棧(請參見下圖)。3d
運行時系統在調用堆棧中搜索包含可處理異常的代碼塊的方法,這段代碼稱爲異常處理程序,搜索從發生錯誤的方法開始,而後按照調用方法的相反順序遍歷調用堆棧,找到適當的處理程序後,運行時系統會將異常傳遞給處理程序,若是拋出的異常對象的類型與處理程序能夠處理的類型匹配,則認爲異常處理程序是合適的。code
所選擇的異常處理程序被稱爲捕獲異常,若是運行時系統窮舉搜索調用堆棧上的全部方法而沒有找到適當的異常處理程序,以下圖所示,則運行時系統(以及程序)終止。對象
使用異常來管理錯誤與傳統的錯誤管理技術相比具備一些優點,你能夠在「異常優點」部分了解更多信息。blog