最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談java中異常拋出后代碼是否會繼續(xù)執(zhí)行

 更新時間:2016年10月04日 09:21:44   作者:Alent  
這篇文章主要給大家介紹了java中異常拋出后代碼是否會繼續(xù)執(zhí)行,文章通過幾種情況的代碼示例給大家詳細分析了這個情況,有需要的朋友們可以參考借鑒,下面來一起看看吧。

問題

今天遇到一個問題,在下面的代碼中,當(dāng)拋出運行時異常后,后面的代碼還會執(zhí)行嗎,是否需要在異常后面加上return語句呢?

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


為了回答這個問題,我編寫了幾段代碼測試了一下,結(jié)果如下:

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

  throw new Exception("參數(shù)越界"); 
  System.out.println("異常后"); //編譯錯誤,「無法訪問的語句」
}
//代碼2
try{
  throw new Exception("參數(shù)越界"); 
}catch(Exception e) {
  e.printStackTrace();
}
System.out.println("異常后");//可以執(zhí)行
//代碼3
if(true) {
  throw new Exception("參數(shù)越界"); 
}
System.out.println("異常后"); //拋出異常,不會執(zhí)行

總結(jié):

若一段代碼前有異常拋出,并且這個異常沒有被捕獲,這段代碼將產(chǎn)生編譯時錯誤「無法訪問的語句」。如代碼1

若一段代碼前有異常拋出,并且這個異常被try...catch所捕獲,若此時catch語句中沒有拋出新的異常,則這段代碼能夠被執(zhí)行,否則,同第1條。如代碼2

若在一個條件語句中拋出異常,則程序能被編譯,但后面的語句不會被執(zhí)行。如代碼3

另外總結(jié)一下運行時異常與非運行時異常的區(qū)別:

運行時異常是RuntimeException類及其子類的異常,是非受檢異常,如NullPointerException、IndexOutOfBoundsException等。由于這類異常要么是系統(tǒng)異常,無法處理,如網(wǎng)絡(luò)問題;

要么是程序邏輯錯誤,如空指針異常;JVM必須停止運行以改正這種錯誤,所以運行時異??梢圆贿M行處理(捕獲或向上拋出,當(dāng)然也可以處理),而由JVM自行處理。Java Runtime會自動catch到程序throwRuntimeException,然后停止線程,打印異常。

非運行時異常是RuntimeException以外的異常,類型上都屬于Exception類及其子類,是受檢異常。非運行時異常必須進行處理(捕獲或向上拋出),如果不處理,程序?qū)⒊霈F(xiàn)編譯錯誤。一般情況下,API中寫了throwsException都不是RuntimeException

常見運行時異常:

常見非運行時異常:

 

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • BeanFactory和FactoryBean的區(qū)別示例詳解

    BeanFactory和FactoryBean的區(qū)別示例詳解

    這篇文章主要為大家介紹了BeanFactory和FactoryBean的區(qū)別示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • JAVA對字符串進行32位MD5加密的實踐

    JAVA對字符串進行32位MD5加密的實踐

    本文主要介紹了JAVA對字符串進行32位MD5加密的實踐,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • mybatisPlus自定義批量新增的實現(xiàn)代碼

    mybatisPlus自定義批量新增的實現(xiàn)代碼

    這篇文章主要介紹了mybatisPlus自定義批量新增的實現(xiàn)代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • 解決springboot自定義配置Boolean屬性不能生效的問題

    解決springboot自定義配置Boolean屬性不能生效的問題

    這篇文章主要介紹了解決springboot自定義配置Boolean屬性不能生效的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • java獲取網(wǎng)絡(luò)圖片上傳到OSS的方法

    java獲取網(wǎng)絡(luò)圖片上傳到OSS的方法

    這篇文章主要為大家詳細介紹了java獲取網(wǎng)絡(luò)圖片上傳到OSS,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 詳解Java發(fā)送HTTP請求

    詳解Java發(fā)送HTTP請求

    這篇文章主要介紹了Java發(fā)送HTTP請求,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Spring?Cloud?Ribbon的使用原理解析

    Spring?Cloud?Ribbon的使用原理解析

    現(xiàn)在Java非常流行微服務(wù),也就是所謂的面向服務(wù)開發(fā),將一個項目拆分成了多個項目,其優(yōu)點有很多,其中一個優(yōu)點就是:將服務(wù)拆分成一個一個微服務(wù)后,我們很容易的來針對性的進行集群部署,這篇文章主要介紹了Spring?Cloud?Ribbon的使用詳解,需要的朋友可以參考下
    2022-07-07
  • Java深入探究關(guān)鍵字abstract的使用

    Java深入探究關(guān)鍵字abstract的使用

    如果一個方法使用 abstract 來修飾,則說明該方法是抽象方法,抽象方法只有聲明沒有實現(xiàn)。需要注意的是 abstract 關(guān)鍵字只能用于普通方法,不能用于 static 方法或者構(gòu)造方法中
    2022-05-05
  • JAVA實現(xiàn)賬戶取款和存款操作

    JAVA實現(xiàn)賬戶取款和存款操作

    這篇文章主要介紹了JAVA實現(xiàn)賬戶取款和存款操作,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • java抓取鼠標(biāo)事件和鼠標(biāo)滾輪事件示例

    java抓取鼠標(biāo)事件和鼠標(biāo)滾輪事件示例

    這篇文章主要介紹了java抓取鼠標(biāo)事件和鼠標(biāo)滾輪事件示例,需要的朋友可以參考下
    2014-05-05

最新評論

尉氏县| 虎林市| 淮阳县| 精河县| 定结县| 浮山县| 同德县| 嘉定区| 桃源县| 龙游县| 平定县| 通城县| 太白县| 富顺县| 桑日县| 乌鲁木齐市| 新和县| 胶南市| 鹿邑县| 兴国县| 天等县| 眉山市| 贡山| 奈曼旗| 休宁县| 莒南县| 揭东县| 交口县| 四子王旗| 阿荣旗| 外汇| 江西省| 江西省| 家居| 麻城市| 永康市| 西吉县| 桃源县| 丹凤县| 汝阳县| 普格县|