Java異常處理實(shí)例詳解
1. 異常例子
class TestTryCatch { public static void main(String[] args){ int arr[] = new int[5]; arr[7] = 10; System.out.println("end!!!"); } }
輸出:(越界)
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7 at TestTryCatch.main(TestTryCatch.java:4) 進(jìn)程已結(jié)束,退出代碼1
2. 異常處理
class TestTryCatch { public static void main(String[] args){ try { int arr[] = new int[5]; arr[7] = 10; } catch (ArrayIndexOutOfBoundsException e){ System.out.println("數(shù)組范圍越界!"); System.out.println("異常:"+e); } finally { System.out.println("一定會執(zhí)行finally語句塊"); } System.out.println("end!!!"); } }
輸出:
數(shù)組范圍越界! 異常:java.lang.ArrayIndexOutOfBoundsException: 7 一定會執(zhí)行finally語句塊 end!!!
3. 拋出異常
語法:throw 異常類實(shí)例對象;
int a = 5, b = 0; try{ if(b == 0) throw new ArithmeticException("一個(gè)算術(shù)異常,除數(shù)0"); else System.out.println(a+"/"+b+"="+ a/b); } catch(ArithmeticException e){ System.out.println("拋出異常:"+e); }
輸出:
拋出異常:java.lang.ArithmeticException: 一個(gè)算術(shù)異常,除數(shù)0
對方法進(jìn)行異常拋出
void add(int a, int b) throws Exception { int c = a/b; System.out.println(a+"/"+b+"="+c); }
TestTryCatch obj = new TestTryCatch(); obj.add(4, 0);
輸出:(報(bào)錯)
java: 未報(bào)告的異常錯誤java.lang.Exception; 必須對其進(jìn)行捕獲或聲明以便拋出
可見,方法后面跟了 throws 異常1, 異常2...
,則 必須 在調(diào)用處 處理
改為:
TestTryCatch obj = new TestTryCatch(); try{ obj.add(4, 0); } catch (Exception e){ System.out.println("必須處理異常:"+e); }
輸出:
必須處理異常:java.lang.ArithmeticException: / by zero
4. 編寫異常類
語法:(繼承 extends Exception
類)
class 異常類名 extends Exception{ ...... }
class MyException extends Exception{ public MyException(String msg){ // 調(diào)用 Exception 類的構(gòu)造方法,存入異常信息 super(msg); } }
try{ throw new MyException("自定義異常!"); } catch (Exception e){ System.out.println(e); }
輸出:
MyException: 自定義異常!
到此這篇關(guān)于Java異常處理實(shí)例詳解的文章就介紹到這了,更多相關(guān)Java異常處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java發(fā)送kafka事務(wù)消息的實(shí)現(xiàn)方法
本文主要介紹了java發(fā)送kafka事務(wù)消息的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07獲取系統(tǒng)參數(shù)System.getProperties()與配置文件參數(shù)@Value(“${key}“)
這篇文章主要介紹了獲取系統(tǒng)參數(shù)System.getProperties()與配置文件參數(shù)@Value("${key}"),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05詳解java中Reference的實(shí)現(xiàn)與相應(yīng)的執(zhí)行過程
不知道大家知不知道特殊的reference對象都是被jvm專門處理的,所以這篇文章就相應(yīng)的工作流程和referencequeue之間的協(xié)作進(jìn)行梳理.有需要的朋友們可以參考借鑒。2016-09-09Java實(shí)現(xiàn)簡單的郵件發(fā)送功能
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡單的郵件發(fā)送功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07Java8 Lambda表達(dá)式模板方法實(shí)現(xiàn)解析
這篇文章主要介紹了Java8 Lambda表達(dá)式模板方法實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08Java時(shí)間處理第三方包Joda?Time使用詳解
這篇文章主要為大家介紹了Java時(shí)間處理第三方包Joda?Time使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07