国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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

服務器之家 - 編程語言 - Java教程 - Java異常處理的12條軍規總結

Java異常處理的12條軍規總結

2021-07-29 11:49張濤tom Java教程

這篇文章主要給大家介紹了關于Java異常處理的12條軍規,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Java具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

異常的概念

異常是程序中的一些錯誤,但并不是所有的錯誤都是異常,并且錯誤有時候是可以避免的。

比如說,你的代碼少了一個分號,那么運行出來結果是提示是錯誤java.lang.error;如果你用system.out.println(11/0),那么你是因為你用0做了除數,會拋出java.lang.arithmeticexception的異常。

異常發生的原因有很多,通常包含以下幾大類:

•用戶輸入了非法數據。

•要打開的文件不存在。

•網絡通信時連接中斷,或者jvm內存溢出。

這些異常有的是因為用戶錯誤引起,有的是程序錯誤引起的,還有其它一些是因為物理錯誤引起的。-

在java語言中,異常從使用方式上可以分為兩大類:

  • checkedexception
  • uncheckedexception

在java中類的異常結構圖如下:

Java異常處理的12條軍規總結

  1. 可檢查異常需要在方法上聲明,一般要求調用者必須感知異常可能發生,并且對可能發生的異常進行處理。可以理解成系統正常狀態下很可能發生的情況,通常發生在通過網絡調用外部系統或者使用文件系統時,在這種情況下,錯誤是可能恢復的,調用者可以根據異常做出必要的處理,例如重試或者資源清理等。
  2. 非檢查異常是不需要在throws子句中聲明的異常。jvm根本不會強制您處理它們,因為它們主要是由于程序錯誤而在運行時生成的。它們擴展了runtimeexception。最常見的例子是nullpointerexception 可能不應該重試未經檢查的異常,并且正確的操作通常應該是什么都不做,并讓它從您的方法和執行堆棧中出來。在高執行級別,應記錄此類異常。
  3. error是最為嚴重的運行時錯誤,幾乎是不可能恢復和處理,一些示例是outofmemoryerror,linkageerror和stackoverflowerror。它們通常會使程序或程序的一部分崩潰。只有良好的日志記錄練習才能幫助您確定錯誤的確切原因.

在異常處理時的幾點建議:

1永遠不要catch中吞掉異常,否則在系統發生錯誤時,你永遠不知道到底發生了什么

?
1
2
3
catch (someexception e) {
 return null;
}

2盡量使用特定的異常而不是一律使用exception這樣太泛泛的異常

?
1
public void foo() throws exception { //錯誤的做法}
?
1
public void foo() throws mybusinessexception1, mybusinessexception2 { //正確的做法}

        一味的使用exception,這樣就違背了可檢查異常的設計初衷,因為調用都不知道exception到底是什么,也不知道該如何處理。捕獲異常時,也不要捕獲范圍太大,例如捕獲exception,相反,只捕獲你能處理的異常,應該處理的異常。即然方法的聲明者在方法上聲明了不同類型的可檢查異常,他是希望調用者區別對待不同異常的。

3never catch throwable class

    永遠不要捕獲throwable,因為error也是繼承自它,error是jvm都處理不了的錯誤,你能處理?所以基于有些jvm在error時就不會讓你catch住。

4正確的封裝和傳遞異常

不要丟失異常棧,因為異常棧對于定位原始錯誤很關鍵

?
1
2
3
catch (someexception e) {
throw new myserviceexception("some information: " + e.getmessage()); //錯誤的做法
}

一定要保留原始的異常:

?
1
2
3
catch (someexception e) {
  throw new myserviceexception("some information: " , e); //正確的打開方式
}

5要打印異常,就不要拋出,不要兩者都做

?
1
2
3
4
catch (someexception e) {
  logger.error("some information", e);
throw e;
}

這樣的log沒有任何意義,只會打印出一連串的error log,對于定位問題無濟于事。

6不要在finally塊中拋出異常

如果在finally中拋出異常,將會覆蓋原始的異常,如果finally中真的可能會發生異常,那一定要處理并記錄它,不要向上拋。

7不要使用printstacktrace

要給異常添加上有用的上下文信息,單純的異常棧,沒有太大意義

8throw early catch late

異常界著名的原則,錯誤發生時及早拋出,然后在獲得所以全部信息時再捕獲處理.也可以理解為在低層次拋出的異常,在足夠高的抽象層面才能更好的理解異常,然后捕獲處理。

9對于使用一些重量級資源的操作,發生異常時,一定記得清理

如網絡連接,數據庫操作等,可以用try finally來做clean up的工作。

10不要使用異常來控制程序邏輯流程

我們總是不經意間這么做了,這樣使得代碼變更丑陋,使得正常業務邏輯和錯誤處理混淆不清;而且也可能會帶來性能問題,因為異常是個比較重的操作。

11及早校驗用戶的輸入

在最邊緣的入口校驗用戶的輸入,這樣使得我們不用再更底層邏輯中處處校驗參數的合法性,能大大簡化業務邏輯中不必要的異常處理邏輯;相反,在業務中不如果擔心參數的合法性,則應該使用衛語句拋出運行時異常,一步步把對參數錯誤的處理推到系統的邊緣,保持系統內部的清潔。

12在打印錯誤的log中盡量在一行中包含盡可能多的上下文

?
1
2
logger.debug("enter a");
logger.debug("enter b"); //錯誤的方式
?
1
logger.debug("enter a, enter b");//正確的方式

thanks all. happy learning!!

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。

原文鏈接:https://mp.weixin.qq.com/s/Oo53o8Qhiu8VHH70dTIOuA

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 在线观看亚洲一区二区三区 | 国产精品成人免费视频 | 亚洲精品成人免费 | 国产精品国产 | 欧洲精品在线观看 | 91香蕉| 字幕网av| 伊人伊成久久人综合网站 | 亚洲精品国产a | 亚洲国产中文字幕在线 | 成人深夜免费视频 | 国产精品高潮呻吟久久 | 欧美日本一区二区三区 | 精品国产一区二区在线 | 亚洲黄色免费 | 91免费影视 | 国产一区二区三区免费 | 亚洲狠狠丁香婷婷综合久久久 | 久久综合一 | 欧美v片| 亚洲视频一区 | 性色视频在线 | 成人国产免费视频 | 久久av综合 | 在线91 | 久久亚洲一区二区 | 午夜精品视频 | 精品国产99 | 在线免费国产 | 日韩成人免费 | 91国视频 | 亚洲久久久久久 | 亚洲国产成人av好男人在线观看 | 成人亚洲视频 | 中文字幕精品一区二区精品 | 精品视频成人 | 忘忧草av| 午夜视频在线 | 国产亚洲精品久久久闺蜜 | 成人精品在线 | 亚洲精品在线成人 |