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

Java異常處理學(xué)習(xí)心得

 更新時(shí)間:2018年01月30日 15:22:18   投稿:laozhang  
本篇文章給大家詳細(xì)講述了學(xué)習(xí)Java異常處理學(xué)習(xí)的心得以及原理介紹,對(duì)此有興趣的朋友參考下吧。

程序中總是存在著各種問(wèn)題,為了使在程序執(zhí)行過(guò)程中能正常運(yùn)行,使用Java提供的異常處理機(jī)制捕獲可能發(fā)生的異常,對(duì)異常進(jìn)行處理并使程序能正常運(yùn)行。這就是Java的異常處理。

一、可捕獲的異常

Java中可以捕獲的異常分為可控式和運(yùn)行時(shí)異常。

1. 可控式異常

在Java中把那些可以預(yù)知的錯(cuò)誤,在程序編譯時(shí)就能對(duì)程序中可能存在的錯(cuò)誤進(jìn)行處理,并給出具體的錯(cuò)誤信息,這些錯(cuò)誤稱為可控式異常。常用的可控式異常如下:

異常說(shuō)明 IOException 當(dāng)發(fā)生某種I/O異常時(shí),拋出此異常 SQLException 提供關(guān)于數(shù)據(jù)庫(kù)訪問(wèn)錯(cuò)誤或其他錯(cuò)誤信息的異常 ClassNotFoundException 類沒(méi)有找到異常 NoSuchFieldException 類不包含指定名稱的字段時(shí)產(chǎn)生的信號(hào)NoSuchMethodException 無(wú)法找到某一特定方法時(shí),拋出該異常

2. 運(yùn)行時(shí)異常

在Java中不能被編譯器檢測(cè)到的錯(cuò)誤稱為運(yùn)行時(shí)異常。常用的運(yùn)行時(shí)異常如下:

 異常  說(shuō)明  IndexOutOfBoundsException  指示某集合或數(shù)組的索引值超出范圍時(shí)拋出該異常  NullPointerException  當(dāng)應(yīng)用程序試圖在需要對(duì)象的地方使用null時(shí),拋出該異常  ArithmeticException  當(dāng)出現(xiàn)異常的運(yùn)算條件時(shí),拋出此異常  IllegalArgumentException  拋出異常的表明向方法傳遞了一個(gè)不合法或不正確的的參數(shù)  ClassCastException  當(dāng)試圖將對(duì)象強(qiáng)制轉(zhuǎn)換為不是實(shí)例的子類時(shí),拋出該異常

二、處理異常

在Java中當(dāng)程序出現(xiàn)異常時(shí),可以使用try···catch、try···catch···finally或try···finally進(jìn)行處理。

1. 使用try···catch處理異常

try后是正常執(zhí)行的語(yǔ)句,而catch后是對(duì)異常處理的語(yǔ)句,catch的括號(hào)中是程序需要處理的異常類型。語(yǔ)法格式如下:

try {
  正常執(zhí)行的語(yǔ)句
} catch(Exception e) {
  對(duì)異常進(jìn)行處理的語(yǔ)句
}

這里舉一個(gè)算數(shù)異常的例子,如下。

 public class ExceptionTest { 
   public static void main(String[] args) {
     int result = 1 / 0;
     try {
       System.out.println(result);
     } catch (Exception e) {
       System.out.println("拋出異常:" + e.getMessage());
     }
   } 
 }

這里1/0是個(gè)異常的算法,因?yàn)槌龜?shù)不能為0。運(yùn)行結(jié)果如下:

因?yàn)橛挟惓?,所以不?zhí)行try后的語(yǔ)句,從而執(zhí)行catch后的語(yǔ)句。其中“e.getMessage()”是獲取異常信息的方法,用于獲取詳細(xì)消息字符串;此外還有printStackTrace()方法,用于將其棧蹤跡輸出至標(biāo)準(zhǔn)錯(cuò)誤流;toString()方法用于獲得簡(jiǎn)短描述。

2. 使用try···catch···finally處理異常

這里try、catch后的語(yǔ)句與前面的相同,而finally后的語(yǔ)句無(wú)論是否發(fā)生異常都要執(zhí)行,因此finally語(yǔ)句塊通常用于執(zhí)行垃圾回收。語(yǔ)法格式如下:

try {
  正常執(zhí)行的語(yǔ)句
} catch(Exception e) {
  對(duì)異常進(jìn)行處理的語(yǔ)句
} finally {
  一定會(huì)被處理的語(yǔ)句
}

3. 使用try···finally處理異常

在程序發(fā)生異常時(shí),就可以在finally語(yǔ)句塊中對(duì)其進(jìn)行相應(yīng)的處理,另外當(dāng)程序沒(méi)有發(fā)生異常時(shí),執(zhí)行完try和finally之間的語(yǔ)句后,也將執(zhí)行finally語(yǔ)句塊中的代碼。語(yǔ)法格式如下:

try {
  需要執(zhí)行的語(yǔ)句
} finally {
  一定會(huì)被處理的語(yǔ)句
}

三、拋出異常

對(duì)于程序中發(fā)生的異常,除了上面的try···catch語(yǔ)句處理之外,還可以使用throws聲明或throws語(yǔ)句拋出異常。

1. 使用throws聲明拋出異常

throws用于方法聲明,在聲明方法時(shí)使用throws聲明拋出異常,然后在調(diào)用該方法中對(duì)異常進(jìn)行處理。

如需聲明多個(gè)異常,各異常間要用逗號(hào)分隔,語(yǔ)法格式如下:

數(shù)據(jù)類型 方法名(形參列表) throws 異常類1, 異常類2, ……, 異常類n {
  方法體;
}

比如用throws拋出Exception異常。

public void showInfo() throws Exception {    // 拋出Exception
  FileInputStream in = new FileInputStream("C://Record.txt");  // 創(chuàng)建IO對(duì)象 
}

2. 使用throw語(yǔ)句拋出異常

如果希望程序自行拋出異常,可以使用throw語(yǔ)句來(lái)實(shí)現(xiàn)。語(yǔ)法格式如下: throw new Exception("對(duì)異常的說(shuō)明"); 

使用throw語(yǔ)句拋出的是異常類的實(shí)例,通常與if語(yǔ)句一起使用。如:

if(x < 0) {
  throw new Exception("程序異常,x不能小于0。");
}

相關(guān)文章

  • Java操作Excel文件解析與讀寫(xiě)方法詳解

    Java操作Excel文件解析與讀寫(xiě)方法詳解

    相信現(xiàn)在很多搞后端的同學(xué)大部分做的都是后臺(tái)管理系統(tǒng),那么管理系統(tǒng)就肯定免不了Excel的導(dǎo)出導(dǎo)入功能,下面這篇文章主要給大家介紹了關(guān)于Java簡(jiǎn)單使用EasyExcel操作讀寫(xiě)與解析的步驟與要點(diǎn),需要的朋友可以參考下
    2022-11-11
  • ConcurrentModificationException日志關(guān)鍵字報(bào)警思考分析

    ConcurrentModificationException日志關(guān)鍵字報(bào)警思考分析

    本文將記錄和分析日志中的ConcurrentModificationException關(guān)鍵字報(bào)警,還有一些我的思考,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2023-12-12
  • idea使用easyCode生成代碼(根據(jù)mybatis-plus模板創(chuàng)建自己的模板)

    idea使用easyCode生成代碼(根據(jù)mybatis-plus模板創(chuàng)建自己的模板)

    本文主要介紹了idea使用easyCode生成代碼,easyCode代碼生成器可以減少低價(jià)值搬磚,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • 深入理解Java線程池從設(shè)計(jì)思想到源碼解讀

    深入理解Java線程池從設(shè)計(jì)思想到源碼解讀

    這篇文章主要介紹了深入理解Java線程池從設(shè)計(jì)思想到源碼解讀,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Java設(shè)計(jì)模式之享元模式

    Java設(shè)計(jì)模式之享元模式

    這篇文章介紹了Java設(shè)計(jì)模式之享元模式,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • IntellJ IDEA JAVA代碼任務(wù)標(biāo)記實(shí)例解析

    IntellJ IDEA JAVA代碼任務(wù)標(biāo)記實(shí)例解析

    這篇文章主要介紹了IntellJ IDEA JAVA代碼任務(wù)標(biāo)記實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • springboot組件初始化后的4種啟動(dòng)方式及常用方法

    springboot組件初始化后的4種啟動(dòng)方式及常用方法

    在Spring Boot中,您可以通過(guò)幾種方式在組件初始化后執(zhí)行啟動(dòng)任務(wù),下面小編給大家分享springboot組件初始化后的4種啟動(dòng)方式及常用方法,感興趣的朋友一起看看吧
    2024-06-06
  • SpringBoot加載bean的八種方式總結(jié)

    SpringBoot加載bean的八種方式總結(jié)

    springboot難免要用到bean,但這些bean如何導(dǎo)入,對(duì)于初學(xué)者時(shí)間頭疼的事,下面這篇文章主要給大家介紹了關(guān)于SpringBoot加載bean的八種方式,需要的朋友可以參考下
    2022-10-10
  • 一篇文章帶你從java字節(jié)碼層理解i++和++i

    一篇文章帶你從java字節(jié)碼層理解i++和++i

    這篇文章帶你從java字節(jié)碼層理解i++和++i,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • JAVA中STRING的常用方法小結(jié)

    JAVA中STRING的常用方法小結(jié)

    這篇文章介紹了JAVA中STRING的常用方法,有需要的朋友可以參考一下
    2013-09-09

最新評(píng)論

宁化县| 巴彦县| 体育| 木兰县| 循化| 泰宁县| 瓮安县| 桂林市| 瑞丽市| 白朗县| 陕西省| 石林| 许昌县| 巨鹿县| 应城市| 扎兰屯市| 来宾市| 诸城市| 灵武市| 成武县| 黄山市| 灵川县| 会东县| 无极县| 永胜县| 兰考县| 黄梅县| 凤山市| 弥渡县| 尉犁县| 团风县| 余庆县| 厦门市| 蓬溪县| 鄂伦春自治旗| 贵德县| 阿尔山市| 赤城县| 开封市| 湘潭市| 额尔古纳市|