在一個方法中如果發生異常,這個方法會創建一個異常對象,并轉交給JVM,該異常對象包含異常名稱,異常描述以及異常發生時應用程序的狀態。
創建異常對象并轉交給JVM的過程稱為拋出異常。可能有一系列的方法調用,最終才進入拋出異常的方法,這一系列方法調用的有序列表叫做調用棧。 JVM會順著調用棧去查找看是否有可以處理異常的代碼,如果有,則調用異常處理代碼。當JVM發現可以處理異常的代碼時,會把發生的異常傳遞給它。
如果JVM沒有找到可以處理該異常的代碼塊,JVM就會將該異常轉交給默認的異常處理器(默認處理器為JVM的一部分),默認異常處理器打印出異常信息并終止應用程序。