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