亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java8中的異常處理介紹

發布時間:2020-06-04 19:54:55 來源:億速云 閱讀:470 作者:Leah 欄目:編程語言

這篇文章的知識點包括:異常處理的簡介、異常處理的工作機制以及異常處理的使用,閱讀完整文相信大家對java8中的異常處理有了一定的認識。

一、異常概述與異常體系結構

Error:Java虛擬機無法解決的嚴重問題:
JVM系統內部錯誤,資源耗盡,如:StackOverflow \OOM堆棧溢出
處理辦法:只能修改代碼,不能編寫處理異常的代碼
Exception:可以處理的異常
(1)空指針訪問
(2)試圖讀取不存在的文件
(3)網絡連接中斷
(4)數組角標越界
處理異常的最佳時間:編譯期間
編譯時異常----受檢異常-----更嚴重,執行javac.exe命令時可能出現的異常
運行時異常---非受檢異常---執行java.exe命令時,出現的異常---一般也不用try-catch處理(實際開發中)
異常的體系結構:
java8中的異常處理介紹
常見的異常類型,舉例說明:

java8中的異常處理介紹

/* **************運行時異常************ */
@Test
//ArithmeticException
public void test1(){
    int a=2;
    int b=0;
    System.out.println(a/b);
}

@Test
//InputMismatchException
public void test2(){
    Scanner scanner=new Scanner(System.in);
    int score=scanner.nextInt();
    System.out.println(score);
    scanner.close();
}

@Test
//NullPointerException
public void test3(){
    int[] num=null;
    System.out.println(num[3]);
    String str=null;
    System.out.println(str.length());
}

@Test
//ArrayIndexOutOfBoundsException
//StringIndexOutOfBoundException
public void test4(){
    int[] num = new int[2];
    System.out.println(num[3]);
    String str="abc";
    System.out.println(str.charAt(5));
}

@Test
//ClassCastException
public void test5(){
    Object obj=new Date();
    System.out.println(obj);
    String str=(String)obj;
}

@Test
//NumberFormatException
public void test6(){
    String str="abc";
    System.out.println(Integer.valueOf(str));
}

二、異常處理機制

1.抓拋模型

拋——程序在正常執行的過程中, 一旦出現異常,會產生并拋出一個異常類的對象,之后代碼不執行
關于異常類對象的產生:(1)系統自動生成的異常對象
(2)手動生成一個異常對象并拋出throw new 異常名();

抓——處理異常的方式
(1)try-catch-finally
(2)throws 往外拋,最多拋到main就要處理

2.異常處理方式一:try-catch-finally

try{
   // 可能產生異常的代碼
}catch(異常類型1 變量名1){
  //處理異常的方式1
}catch(異常類型2 變量名2){
  //處理異常的方式2
}finally{
  //一定會執行的代碼
}

說明:
(1)finally是可以省略的
(2)使用try將可能產生異常的代碼包裝起來,一旦出現異常,就會生成一個對應的異常類對象
根據此對象的類型,去catch中進行匹配
(3)一旦try中的異常對象匹配到某一個catch,就會進入catch中進行異常的處理,一旦處理完成,
就跳出當前的try-catch結構(在沒有寫finally時),繼續執行其后的代碼
(4)catch中的異常類型如果沒有子父類關系,則誰聲明在上,在下無所謂
catch中的異常類型如果滿足子父類關系,則要求子類一定聲明在父類的上面,否則會報錯
(5)常用的異常對象處理方式:
①String getMessage()
②e.printStackTrace()
(6)在try結構中聲明的變量,出了try結構以后,就不能再被調用
finally的認識
(1)finally中聲明的語句是一定會被執行的代碼,即使catch中又出現了異常,try中有return,catch種有return語句等
(2)finally中的語句會在所有return語句執行前被執行
finally中如果有return,直接執行finally中的return
(3)finally的使用場景:
像數據庫連接、輸入輸出流、網絡編程Socket等資源,
JVM是不能自動回收的,需要手動進行資源釋放,就需要聲明在finally中
體會:
(1)使用try-catch-finally處理編譯時異常,使得程序在編譯時不再報錯,但運行時仍可能報錯
相當于shiyongtry-catch-finally將一個編譯時可能出現的異常,延遲到運行時出現
(2)開發中,由于運行時異常比較常見,所以通常不針對運行時異常編寫try-catch-finally
編譯時異常,一定要考慮異常處理

3.異常處理方式二:throws+異常類型

  寫在方法的聲明處,指明此方法執行時,可能會拋出的異常類型。一旦當方法體執行時,出現異常,仍會在

異常代碼處生成一個異常類的對象,此對象滿足throws后的異常類型時,就會被拋出。異常代碼后續的代碼不會再執行。

4.對比兩種處理方式

try-cathch-finally:真正將異常處理掉了
throws+異常類型:只是將異常拋給了方法的調用者,并沒有真正將異常處理掉
體會
(1)父類沒有拋出異常,子類也不能拋異常
(2)子類拋出的異常不大于父類拋出的異常

5.開發中如何選擇使用try-catch-finally還是throws

(1)如果父類中被重寫的方法沒有throws處理異常,則子類重寫方法也不能用throws
只能用try-catch-finally
(2)執行的方法中,先后調用了另外幾個方法,這幾個被調用的方法是遞進關系執行的,
建議使用throws處理這幾個方法,執行方法使用try-catch-finally

三、手動拋出異常對象 throw

1.運行時異常可以不在方法聲明里throws
2.編譯時異常需要在方法聲明中拋出

四、用戶自定義異常

1.繼承現有的異常體系結構RuntimeException,Exception
2.提供序列版本號
3.提供重載的構造器

五、throw和throws的區別

throw:拋出一個異常類的對象,生成異常對象的過程聲明在方法體內
throws:屬于異常處理的一種方式,在方法聲明處聲明

看完上述內容,你們對java8中的異常處理有進一步的了解嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

古浪县| 讷河市| 西城区| 丰镇市| 搜索| 绿春县| 泰顺县| 大竹县| 于都县| 科技| 方山县| 炉霍县| 格尔木市| 湖南省| 伊通| 临西县| 达拉特旗| 青冈县| 巴彦淖尔市| 蒙城县| 浦东新区| 伊川县| 清流县| 瑞昌市| 新源县| 页游| 崇义县| 防城港市| 潞西市| 宁德市| 奈曼旗| 永顺县| 汽车| 南雄市| 新疆| 阿荣旗| 霍城县| 东至县| 陆川县| 岐山县| 务川|