成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

阿里面試:關于Java的異常,你能說多少?

開發 后端
小伙伴們對Java的異常應該是不陌生的,不過很多人只是簡單的應用而已,而沒有全面的,整體的去了解Java的異常體系。今天老顧就來跟大家一起學習JAVA的異常。

小伙伴們對Java的異常應該是不陌生的,不過很多人只是簡單的應用而已,而沒有全面的,整體的去了解Java的異常體系。今天老顧就來跟大家一起學習JAVA的異常。

3W原則

哪都有的3W原則,JAVA異常也可以總結3W:what、where、why

  • what對應異常類型:回答了什么被拋出
  • where對應異常堆棧跟蹤:回答了在哪拋出
  • why對應異常信息:回答了為什么被拋出

異常體系

阿里面試:關于JAVA的異常,你能說多少?

上圖我們看出Throwable是異常的***類,Error和Exception是他的子類。

Exception又分RuntimeException和非RuntimeException子類。

Error與Exception區別

我們看一下他們的概念定義:

(1) Error:程序無法處理的系統錯誤,編譯器不做檢查。

  • Error表示系統致命的錯誤,程序沒法處理。一般是與JVM相關的問題,如系統崩潰,內存溢出,方法調用棧溢出等,如:經常遇到的StackOverflowError、OutOfMemoryError。這種類型的錯誤,編譯器不做檢查,都是系統運行過程中發生的。
  • 這些錯誤靠我們程序本身是無法處理與預防的,遇到了建議直接程序中止、重啟。

(2) Exception:程序可以處理的異常,捕獲后可處理。

  • Exception異常是程序能夠捕獲的,也可以做異常處理,我們要盡可能的去處理,使程序繼續運行,而不是中止程序。
  • 總結一下就是Error是程序無法處理的錯誤,Exception是可以處理的異常。

RuntimeException與否區別

阿里面試:關于JAVA的異常,你能說多少?

上圖中Exception有兩種類型的異常,我們來看一下。

(1) RuntimeException:不可預知的,程序應當自行避免

  • 何為不可預知?如:數組下標越界,訪問對象空指針等,這種異常是我們小伙伴們在編寫程序時要盡量避免。也就是我們程序員是能夠避免的。
  • 如針對空指針異常,我們應該在編程的時候,加上空指針判斷,if(obj == null)如何如何,這樣就避免了空指針異常。

(2) 非RuntimeException:可預知的,編譯器可檢查的異常

  • 可預知,如:在我們打開一個文件時,如文件不存在引用的異常。
  • 這種異常編譯器會檢查出來,必須需要處理的。
  • 這個也稱之為Checked Exception異常類型

責任歸屬

我們從責任角度看:

  • Error屬于JVM需要承擔的責任
  • RuntimeException是程序應該承擔的責任
  • 非RuntimeException(CheckedException)可檢查異常是JAVA編譯器應該承擔的責任

上面代碼直觀一點:

阿里面試:關于JAVA的異常,你能說多少?

們看到Error和RuntimeException編譯器是不檢查的,而CheckedExcepton異常編譯器是檢查的,也就是我們程序員是必須要捕獲處理的。那怎么處理呢?

(1) try-catch方式

阿里面試:關于JAVA的異常,你能說多少?

用try-catch方式捕獲這個異常,可以在catch代碼段進行異常邏輯處理,這個就按照實際業務而定。如上圖代碼是FileNotFound異常,根據這個類型我們就知道是文件句柄不存在,那我們應該做哪些處理。如:提示一下用戶該文件不存在

(2) 上拋異常方式

在復雜的業務中,我們的程序員自己寫的模塊,很有可能被其他程序員寫的模塊進行引用,為了能夠讓其他程序員知道我們模塊的異常,并要他們要進行處理,我們就可以采用上拋異常方式

阿里面試:關于JAVA的異常,你能說多少?

我們看一下上層調用的處理

阿里面試:關于JAVA的異常,你能說多少?

我們看到上拋異常,是需要調用方進行處理的。那處理的方式是什么呢?其實就是上面講的try-catch或繼續上拋。

常見的Error和Exception

(1) RuntimeException

  • NullPointerException - 空指針引用異常
  • ClassCastException - 類型強制轉換異常
  • IllegalArgumentException - 傳遞非法參數異常
  • IndexOutOfBoundsException - 下標越界異常
  • NumberFormatException - 數字格式異常

(2) 非RuntimeException

  • ClassNotFoundException - 找不到指定class異常
  • IOException - IO操作異常

(3) Error

  • NoClassDefFoundError - 找不到class定義的異常
  • StackOverflowError - 深遞歸導致棧被耗盡拋出的異常
  • OutOfMemoryError - 內存溢出異常

總結

今天老顧介紹了異常的相關知識,這點在我們系統開發時是非常重要的,尤其在我們設計系統時,要定義我們系統自己的異常,這個需要整體規劃異常類型、異常Code、異常信息等,能夠起到很好的排查問題,并方便捕獲處理。

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2017-09-26 11:43:12

Java異常和處理

2024-05-06 00:30:00

MVCC數據庫

2023-11-29 08:00:53

JavaTreeMap底層

2023-08-28 07:39:49

線程調度基本單位

2020-12-01 08:47:36

Java異常開發

2024-07-05 17:47:21

@Async項目啟動類

2024-05-22 09:31:07

2023-09-07 10:26:50

接口測試自動化測試

2022-03-23 15:36:13

數字化轉型數據治理企業

2020-12-10 09:00:00

開發.NET工具

2023-12-24 12:56:36

協程

2024-10-28 08:28:59

2024-04-28 08:52:33

RabbitMQ延遲隊列延遲插件

2024-03-27 14:31:57

JVM對象內存

2025-04-01 08:45:00

2023-05-05 07:10:42

IPv6互聯網

2022-04-02 14:51:58

數據中心數據安全物聯網

2015-09-08 11:14:28

阿里面試面試經歷

2021-05-18 08:02:40

面試面試問題職業規劃

2021-09-27 07:11:18

MySQLACID特性
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人在线日韩 | 国产1区2区在线观看 | 国精品一区二区 | 日韩视频中文字幕 | 美国av片在线观看 | 国产视频精品在线 | 色综合久久天天综合网 | 久久99精品久久久久久 | 日韩欧美久久 | 在线免费观看黄a | 国产精品免费一区二区 | 亚洲人成人一区二区在线观看 | 97超碰中文网 | 欧美成人精品一区二区男人看 | 91久久| a级在线观看 | 国产成人高清 | 国产成人久久av免费高清密臂 | 中文字幕av网站 | 啪啪精品| 99福利视频 | 亚洲精品在线免费 | 亚洲成人一区二区三区 | 51ⅴ精品国产91久久久久久 | 久久小视频 | 国产免费黄网 | 欧美在线精品一区 | 久久久久久免费看 | 免费黄色录像视频 | 中文字幕在线一区二区三区 | 亚洲高清网 | 嫩草视频免费 | 欧美久久一级特黄毛片 | 精品免费国产一区二区三区四区 | 久久久久久亚洲国产精品 | 亚洲综合天堂 | 91亚洲精选 | 亚洲人成人网 | 天天射天天干 | 亚洲成人免费视频 | 欧美国产免费 |