激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 一篇文章帶你深入了解Java異常

一篇文章帶你深入了解Java異常

2021-11-01 12:14Serendipity sn Java教程

本篇文章主要介紹了java異常處理機制及應用,異常處理機制是Java語言的一大特色。從異常處理的機制、異常處理的方法、異常處理的原則等方面介紹Java語言的異常處理技術,有興趣的可以了解一下

一.初識異常

1.常見的異常類型

<1>除以0

?
1
2
3
System.out.println(10/0);
// 執行結果
Exceptioninthread"main"java.lang.ArithmeticException: /byzero

<2>數組下標越界

?
1
2
3
4
int[] arr= {1, 2, 3};
System.out.println(arr[100]);
// 執行結果
Exceptioninthread"main"java.lang.ArrayIndexOutOfBoundsException: 100

<3>訪問null對象

?
1
2
3
4
5
6
7
8
9
publicclassTest {
    publicintnum=10;
    publicstaticvoidmain(String[] args) {
        Testt=null;
        System.out.println(t.num);
    }
}
// 執行結果
Exceptioninthread"main"java.lang.NullPointerException

2.防御式編程

<1>LBYL

Look Before You Leap. 在操作之前就做充分的檢查.(先請示,再行動)

<2>EAFP

It's Easier to Ask Forgiveness than Permission. “事后獲取原諒比事前獲取許可更容易”. 也就是先操作, 遇到問題再處理.(先斬后奏)

二.異常的基本用法

1.捕獲異常

<1>基本語法:

?
1
2
3
4
5
try{   
有可能出現異常的語句 ;
}[catch (異常類型異常對象) {} ... ]
[finally {
異常的出口}]

注意事項:

1.try 代碼塊中放的是可能出現異常的代碼.

2.catch 代碼塊中放的是出現異常后的處理行為.

3.finally 代碼塊中的代碼用于處理善后工作, 會在最后執行.

4.其中 catch 和 finally 都可以根據情況選擇加或者不加.

<2>try catch代碼示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
int[] arr= {1, 2, 3};
try {
    System.out.println("before");
    System.out.println(arr[100]);
    System.out.println("after");
} catch (ArrayIndexOutOfBoundsExceptione) {    // 打印出現異常的調用棧
    e.printStackTrace();
}
System.out.println("after try catch");
// 執行結果
before
java.lang.ArrayIndexOutOfBoundsException: 100
atdemo02.Test.main(Test.java:10)aftertrycatch

一旦 try 中出現異常, 那么 try 代碼塊中的程序就不會繼續執行, 而是交給 catch 中的代碼來執行. catch 執行完畢會繼續往下執行.

注意:catch可以有多個,也可以再一個catch中捕獲多個異常

<3>try catch finally代碼示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int[] arr= {1, 2, 3};
try {
    System.out.println("before");
    arr=null;
    System.out.println(arr[100]);
    System.out.println("after");
} catch (Exceptione) {
    e.printStackTrace();
} finally {
    System.out.println("finally code");}
// 執行結果
before
java.lang.NullPointerException
atdemo02.Test.main(Test.java:12)finallycode

finally 表示最后的善后工作, 例如釋放資源

finally是一定執行的代碼(即使try中含有return語句)

例如:

?
1
2
3
4
5
6
publicstaticintfunc() {    try {
        return10;
    } finally {
        return20;
    }
}

// 執行結果20

2.異常的處理流程

1.程序先執行 try 中的代碼

2.如果 try 中的代碼出現異常, 就會結束 try 中的代碼, 看和 catch 中的異常類型是否匹配.

3.如果找到匹配的異常類型, 就會執行 catch 中的代碼

4.如果沒有找到匹配的異常類型, 就會將異常向上傳遞到上層調用者.

5.無論是否找到匹配的異常類型, finally 中的代碼都會被執行到(在該方法結束之前執行).

6.如果上層調用者也沒有處理的了異常, 就繼續向上傳遞.

7.一直到 main 方法也沒有合適的代碼處理異常, 就會交給 JVM 來進行處理, 此時程序就會異常終止.

3.拋出異常(使用throw關鍵字)

在寫代碼時,有時候需要手動拋出異常(例如登錄界面)示例:

?
1
2
3
4
5
publicstaticintdivide(intx, inty) {
    if (y==0) {
        thrownewArithmeticException("拋出除 0 異常");    }
    returnx/y;
}

三.java異常體系

1.java內置異常

下圖表示 Java 內置的異常類之間的繼承關系:

一篇文章帶你深入了解Java異常

1.頂層類 Throwable 派生出兩個重要的子類, Error 和 Exception

2.其中 Error 指的是 Java 運行時內部錯誤和資源耗盡錯誤. 應用程序不拋出此類異常. 這種內部錯誤一旦出現,除了告知用戶并使程序終止之外, 再無能無力. 這種情況很少出現.

3.Exception 是異常類的父類.

4.其中 Exception 有一個子類稱為 RuntimeException , 這里面又派生出很多我們常見的異常類,NullPointerException , IndexOutOfBoundsException 等.

注意:

1Java語言規范將派生于 Error 類或 RuntimeException 類的所有異常稱為 非受查異常, 所有的其他異常稱為 受查異常.如果一段代碼可能拋出 受查異常, 那么必須顯式進行處理.

2.自定義異常類

創建一個類,繼承內置異常類,實現自定義異常

例如寫一個用戶登錄功能Login:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public static void main(String[] args) {
    try {
        login("admin", "123456");
    } catch (UserError userError) {
        userError.printStackTrace();
    } catch (PasswordError passwordError) {       
    passwordError.printStackTrace();
    }
}
public static void login(StringuserName, Stringpassword) throwsUserError,  PasswordError {
    if (!Test.userName.equals(userName)) {
        throw new UserError("用戶名錯誤");
    }
    if (!Test.password.equals(password)) {
        throw new PasswordError("密碼錯誤");
    }
    System.out.println("登陸成功");
}
class UserError extends Exception {
    publicUserError(Stringmessage) {       
    super(message);
    }
}
class PasswordError extends Exception {
    public PasswordError(Stringmessage) {       
    super(message);
    }
}

注意:

1.自定義異常通常會繼承自 Exception 或者 RuntimeException

2.繼承自 Exception 的異常默認是受查異常

3.繼承自 RuntimeException 的異常默認是非受查異常.

總結

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關注服務器之家的更多內容!

原文鏈接:https://blog.csdn.net/qq_45704528/article/details/113120178

延伸 · 閱讀

精彩推薦
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
主站蜘蛛池模板: 欧美成人免费一区二区三区 | 久色成人 | 国产乱轮视频 | 国产精品亚洲yourport | 日本免费aaa观看 | 一区二区三区四区视频在线观看 | 成人黄色小视频网站 | 午夜男人免费视频 | 性高跟鞋xxxxhd4kvideos | 午夜视频在线观看91 | 少妇一级淫片免费放正片 | 亚洲天堂在线电影 | 一区二区三区欧美在线观看 | 欧美a视频在线观看 | 在线成人免费av | 免费黄色大片网站 | 欧美黑大粗硬毛片视频 | 欧美中文字幕在线视频 | 毛片在线看免费 | 亚洲国产高清一区 | 最近免费中文字幕在线视频2 | 亚洲国产成人一区二区 | 黄色特级片黄色特级片 | 91久久国产露脸精品国产护士 | 日韩视频在线视频 | 久久免费视频1 | 国产精品一区二区三区在线 | 国产精品av久久久久久久久久 | 最新中文在线视频 | 国产乱色精品成人免费视频 | 中国免费一级毛片 | free国产hd老熟bbw | 日本中文视频 | 人成免费a级毛片 | 欧美日韩在线看片 | 97青青草视频 | 欧美视频一二区 | 欧美特一级 | 色猫av | 国产精品99久久久久久久vr | 国产99页 |