亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Exception和Error的區別有哪些

發布時間:2021-08-13 17:32:12 來源:億速云 閱讀:150 作者:Leah 欄目:大數據

Exception和Error的區別有哪些,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

Exception和Error都是繼承了Throwable類,在Java代碼中只有繼承了Throwable類的實例才可以被throw或者被catch。

Exception是程序正常運行過程中可以預料到的意外情況,應該被開發者捕獲并且進行相應的處理。

Error是指在正常情況下不太可能出現的情況,絕大部分的Error都會導致程序處于不正常、不可恢復的狀態也就是掛了。所以不便也不需被開發者捕獲,因為這個情況下你捕獲了也無濟于事。

Java異常又分可檢查異常和不檢查異常。可檢查異常就是編譯器要求必須處置的異常,比如IOException等在代碼里必須顯式的進行捕獲處理。不檢查異常就是編譯器不要求強制處置的異常,包括運行時異常(RuntimeException和其子類)和錯誤(Error),比如NullPointerException等。

異常處理的注意事項

1、盡量不要捕獲類似Exception這樣通用的異常,而應該捕獲特定的異常。

軟件工程是一門協作的藝術,在日常的開發中我們有義務使自己的代碼能更直觀、清晰的表達出我們想要表達的信息。

但是如果你什么異常都用了Exception,那別的開發同事就不能一眼得知這段代碼實際想要捕獲的異常,并且這樣的代碼也會捕獲到可能你希望它拋出而不希望捕獲的異常。

2、不要"吞"了異常

如果我們捕獲了異常,不把異常拋出,或者沒有寫到日志里,那會出現什么情況?線上除了bug莫名其妙的沒有任何的信息,你都不知道哪里出錯以及出錯的原因。

這可能會讓一個簡單的bug變得難以診斷。而且有些同學比較喜歡用catch之后用e.printStackTrace(),在我們產品中通常不推薦用這種方法,一般情況下這樣是沒有問題的但是這個方法輸出的是個標準錯誤流。

Exception和Error的區別有哪些

比如是在分布式系統中,發生異常但是找不到stacktrace。所以最好是輸入到日志里,我們產品可以自定義一定的格式,將詳細的信息輸入到日志系統中,適合清晰高效的排查錯誤。

3、不要延遲處理異常

比如你有個方法,參數是個name,函數內部調了別的好幾個方法,其實你的name傳的是null值,但是你沒有在進入這個方法或者這個方法一開始就處理這個情況,而是在你調了別的好幾個方法然后爆出這個空指針。

這樣的話明明你的出錯堆棧信息只需要拋出一點點信息就能定位到這個錯誤所在的地方,進過了好多方法之后可能就是一坨堆棧信息。

4、只在需要try-catch的地方try-catch,try-catch的范圍能小則小

只要必要的代碼段使用try-catch,不要不分青紅皂白try住一坨代碼,因為try-catch中的代碼會影響JVM對代碼的優化,例如重排序。

5、不要通過異常來控制程序流程

一些可以用if/else的條件語句來判斷例如null值等,就不要用異常,異常肯定是比一些條件語句低效的。而且每實例化一個Exception都會對棧進行快照,相對而言這是一個比較重的操作,如果數量過多開銷就不能被忽略了。

6、不要在finally代碼塊中處理返回值或者直接return

在finally中return或者處理返回值會讓發生很詭異的事情,比如覆蓋了try中的return,或者屏蔽的異常。具體可以去博客什么查查,這里不具體展開講了。

關于Exception和Error的區別有哪些問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新龙县| 揭东县| 寿光市| 于都县| 盈江县| 山丹县| 加查县| 封开县| 永泰县| 葵青区| 盈江县| 额敏县| 衢州市| 金溪县| 美姑县| 馆陶县| 郸城县| 裕民县| 松原市| 云安县| 云阳县| 凯里市| 灵寿县| 兴仁县| 寻乌县| 湖州市| 兰西县| 温泉县| 钟祥市| 化德县| 潼南县| 岳西县| 彭州市| 乌鲁木齐市| 卢氏县| 深泽县| 湘潭县| 永德县| 方山县| 峡江县| 石门县|