您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“java異常級別與捕獲的實現(xiàn)方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“java異常級別與捕獲的實現(xiàn)方法”吧!
這個是jdk 1.8文檔中異常的種族描述
可以看出Java異常體系的根類是 Throwable, 當在java代碼中寫throw拋出異常時,后面跟的對象必然是Throwable或其子類的對象。
然后往下又分為 Exception(異常) 和 Error
其中Exception異常是指一些可以恢復(fù)的異常, 例如常見的NullPointerException空指針異常。
Error指的是一些致命的錯誤,無法通過程序代碼手段恢復(fù)的異常,例如OutOfMemoryError內(nèi)存溢出錯誤。
如果能善用異常機制那么代碼使用就會大大提高
本次模擬一個異常實例,驗證一下異常的捕獲
代碼如下
public class ExceptionTest { public static void main(String[] args) { try{ int i = subtraction(); System.out.println(i); }catch (Exception e){ System.out.println("異常 Exception 被捕獲 異常信息為:"+e); e.printStackTrace(); } } public static int subtraction(){ int result = 0; try { result = 10 / 0; }catch (RuntimeException e){ System.out.println("運行異常 RuntimeException 被捕獲 異常信息"+e); throw new RuntimeException("運行異常"); } return result; } }
我在調(diào)用一個方法的時候,該方法會拋出一個runtimeException 異常
然后我調(diào)用此方法的程序可能會有其他處理操作,也做了個try…catch 處理,然后驗證 主方法的catch是否會執(zhí)行
結(jié)果證明會執(zhí)行
因為被調(diào)用的方法使用throw new RuntimeException("運行異常");
把異常給拋出來了,上面抓到異常以后就會執(zhí)行
我就是在工作中犯了此錯誤,
由于我在被調(diào)用方法catch的時候,給程序中的數(shù)據(jù)賦予,調(diào)用失敗的狀態(tài),結(jié)果異常又被調(diào)用方給捕獲,然后調(diào)用方的catch又將數(shù)據(jù)狀態(tài)改為未知異常,影響了結(jié)果的判斷
最終我將調(diào)用方代碼合并上去,然后多做了一個捕獲
public static void main(String[] args) { try{ int a = 100 / 0; }catch (RuntimeException e){ System.out.println("運行異常 RuntimeException 異常信息為:"+e); throw new RuntimeException(e); }catch (Exception e){ System.out.println("運行異常 Exception 異常信息為:"+e); } }
這次只運行了RuntimeException 的catch 盡管異常已經(jīng)拋出,但是Exception 的catch依舊是沒有執(zhí)行
到此,相信大家對“java異常級別與捕獲的實現(xiàn)方法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。