日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java 异常 总结 try catch finally Exception

發(fā)布時間:2024/8/26 java 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 异常 总结 try catch finally Exception 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

異常

定義

表示程序在運行過程中出現的非正常情況,編寫代碼的過程中盡可能少的減少異常出現的情況

分類

  • Throwable
    • Error 代碼級別無法解決的異常情況
    • Exception
      • 運行時異常:在程序運行過程中,由于輸入的參數值的不同,可能會發(fā)生也可能不會發(fā)生
      • checked異常 :編譯時異常,在ide中會顯示的檢查出來

異常的處理

捕獲異常1、

try{可能出現異常的語句 }catch(可能出現的異常){捕捉異常后執(zhí)行的語句 } // try{int x = 1 /0; }catch(ArithmeticException e){e.printStack(); }

捕獲異常2、

try{可能發(fā)生異常的代碼 }catch(發(fā)生的異常){捕捉異常后執(zhí)行的語句 }finally{不管是否發(fā)生異常都要執(zhí)行的語句 }// try{int x = 1 /0; }catch(ArithmeticException e){e.printStack(); }finally{System.out.println("finally") }

注意

  • 當發(fā)生異常時,在try代碼塊中異常語句后面的語句不會再執(zhí)行

  • try、catch、finally以及try…catch…finally之外的代碼是互相獨立的,在try中定義的變量在其他的部分無法訪問,改變了僅作用于try部分,其他catch、finally情況類似,但是外部定義的變量在try、catch、finally中可以使用

  • 在進行異常捕獲的時候,return語句的不同位置會造成結果的不同

  • 首先討論try…catch…finally后面有代碼的情況

  • //此時注意一個關鍵的點:checked異常,即return語句后面不能再跟語句 // 例如 return; System.out.println("after return");// 這條語句ide直接報錯,相當于多余的 // 故return的語句只能有一下幾種情況 //1try{System.out.println("1");System.out.println(1 / 0);return;}catch (Exception e){System.out.println("2"); // return;}finally {System.out.println("3"); // return;}System.out.println("4");} // 此時return語句永遠都不會被執(zhí)行,也就不會報錯。 //2try{System.out.println("1"); // System.out.println(1 / 0);return;}catch (Exception e){System.out.println("2"); // return;}finally {System.out.println("3"); // return;}System.out.println("4"); //此時,當程序執(zhí)行到return語句時,并不會立即執(zhí)行,而是先掛起,等執(zhí)行完finally中的語句之后再執(zhí)行return語句結束程序,故try、catch、finally之外的其他代碼不會再執(zhí)行 //其他的catch、finally中都不能再存在return語句了

    2.try…catch…finally后面沒有代碼的情況

    //第一種情況 try{System.out.println("1");System.out.println(1 / 0);return;}catch (Exception e){System.out.println("2"); // return;}finally {System.out.println("3"); // return;} // 此時return語句永遠不會執(zhí)行 // 第二種情況,此時return語句有沒有都沒有關系 try{System.out.println("1"); // System.out.println(1 / 0);return;}catch (Exception e){System.out.println("2"); // return;}finally {System.out.println("3"); // return;} //第三種情況 try{System.out.println("1");System.out.println(1 / 0); // return;}catch (Exception e){System.out.println("2");return;}finally {System.out.println("3"); // return;} //此時,還是跟前面一樣的,return先掛起,執(zhí)行完finally中的代碼后再結束程序 //第三種情況 public class Demo {public static void main(String[] args) {System.out.println(method());}public static int method(){try{System.out.println("1");System.out.println(1 / 0); // return;}catch (Exception e){System.out.println("2");return 1;}finally {System.out.println("3"); // return 2;} // System.out.println("4");return 0;} } // 此時會執(zhí)行最近的return語句

    綜上:

  • return語句會被掛起,等執(zhí)行完finally中的語句后再執(zhí)行
  • 當存在兩個return語句時且都能被執(zhí)行時,優(yōu)先執(zhí)行finally中的return
  • 拋出異常

    throws

    將異常情況拋出給調用者

    注意,如果整個程序的運行過程中都沒有異常的處理的話,最終異常會拋給jvm,不太友好,一般都要對異常進行處理

    import java.io.FileInputStream; import java.io.FileNotFoundException;public class Demo1 {public static void main(String[] args) throws FileNotFoundException {FileInputStream fileInputStream = new FileInputStream("test.txt");} }

    自定義異常

    java中提供了非常多的異常類,但是在某些項目中需要自己定義獨特的異常處理方式,此時需要自定義異常

  • 繼承Exception
  • 編寫構造方法,可以傳入自己想打印的異常信息
  • 調用的時候通過throw向外拋出異常
  • public class MyException extends Exception{public MyException(){System.out.println("自定義異常");} } public class Demo1 {public static void main(String[] args) throws MyException {throw new MyException();} }

    另外,還可以自定義異常信息

    public class Demo1 {public static void main(String[] args) throws Exception {throw new Exception("test");} }

    希望對大家有所幫助。

    總結

    以上是生活随笔為你收集整理的Java 异常 总结 try catch finally Exception的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。