程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 淺談java中異常拋出子女碼能否會持續履行

淺談java中異常拋出子女碼能否會持續履行

編輯:關於JAVA

淺談java中異常拋出子女碼能否會持續履行。本站提示廣大學習愛好者:(淺談java中異常拋出子女碼能否會持續履行)文章只能為提供參考,不一定能成為您想要的結果。以下是淺談java中異常拋出子女碼能否會持續履行正文


成績

明天碰到一個成績,鄙人面的代碼中,當拋出運轉時異常後,前面的代碼還會履行嗎,能否須要在異常前面加上return語句呢?

public void add(int index, E element){
  if(size >= elements.length) {
    throw new RuntimeException("次序表已滿,沒法添加"); 
    //return; //須要嗎?
  }
  ....
}


為了答復這個成績,我編寫了幾段代碼測試了一下,成果以下:

//代碼1
public static void test() throws Exception {

  throw new Exception("參數越界"); 
  System.out.println("異常後"); //編譯毛病,「沒法拜訪的語句」
}
//代碼2
try{
  throw new Exception("參數越界"); 
}catch(Exception e) {
  e.printStackTrace();
}
System.out.println("異常後");//可以履行
//代碼3
if(true) {
  throw new Exception("參數越界"); 
}
System.out.println("異常後"); //拋出異常,不會履行

總結:

若一段代碼前有異常拋出,而且這個異常沒有被捕捉,這段代碼將發生編譯時毛病「沒法拜訪的語句」。如代碼1

若一段代碼前有異常拋出,而且這個異常被try...catch所捕捉,若此時catch語句中沒有拋出新的異常,則這段代碼可以或許被履行,不然,同第1條。如代碼2

若在一個前提語句中拋出異常,則法式能被編譯,但前面的語句不會被履行。如代碼3

別的總結一下運轉時異常與非運轉時異常的差別:

運轉時異常是RuntimeException類及其子類的異常,長短受檢異常,如NullPointerExceptionIndexOutOfBoundsException等。因為這類異常要末是體系異常,沒法處置,如收集成績;

要末是法式邏輯毛病,如空指針異常;JVM必需停滯運轉以糾正這類毛病,所以運轉時異常可以不停止處置(捕捉或向上拋出,固然也能夠處置),而由JVM自行處置。Java Runtime會主動catch到法式throwRuntimeException,然後停滯線程,打印異常。

非運轉時異常是RuntimeException之外的異常,類型上都屬於Exception類及其子類,是受檢異常。非運轉時異常必需停止處置(捕捉或向上拋出),假如不處置,法式將湧現編譯毛病。普通情形下,API中寫了throwsException都不是RuntimeException

罕見運轉時異常:

罕見非運轉時異常:

 

好了,以上就是這篇文章的全體內容了,願望本文的內容對年夜家進修或許任務能帶來必定的贊助,假如有疑問年夜家可以留言交換。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved