日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

处理Java异常的10种最佳实践

發布時間:2023/12/3 java 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 处理Java异常的10种最佳实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在本文中,我們將看到處理Java異常的最佳實踐。 用Java處理異常不是一件容易的事,因為新手很難理解,甚至專家級開發人員也可能浪費時間討論應該拋出或處理哪些Java異常。 因此,最大的開發公司對如何使用它們有一套規則。

如果您是公司的新手,那么Java異常處理中各種狀態的呈現方式可能會讓您感到震驚。 本文將向您展示最重要的十個方面,您可以用來入門或改善異常處理。 異常是程序執行期間的異常情況。 因此,讓我們討論處理Java異常的最佳實踐。

1.處理Java異常的最佳實踐

1.1永遠不要在catch塊中使用異常

catch (NoSuchMethodException e) {return null; }

永遠不要返回“ null”而不是處理異常,它會消耗異常并永久性地導致錯誤。 如果您不了解失敗的原因,那么將來就無法阻止自己。

1.2聲明您的方法可能拋出的特定檢查異常

public void foo() throws Exception { //Incorrect way }

始終嘗試避免使用上面的代碼,因為它可能完全出于擁有已檢查異常的目的而造成缺陷。 必須聲明該方法可能引發的特定檢查異常。 如果用戶有許多已檢查的異常,則用戶必須將其覆蓋在用戶的異常中,并將信息附加到異常消息中,否則用戶也可以使用代碼重構。

public void foo() throws SpecificException1, SpecificException2 { //Correct way }

1.3不要獲取異常類,而是捕獲特定的子類

try {someMethod(); } catch (Exception e) { LOGGER.error("method has failed", e); }

獲取異常的主要問題是,如果用戶稍后調用的方法將新檢查的異常附加到其設計簽名中,則開發人員希望用戶必須處理特定的新異常。 如果用戶的代碼出現異常,它將永遠無法理解該變化。 用戶的代碼錯誤,并且可能在運行時的某個時間點崩潰。

1.4永遠不要上任何Throwable類

這是一個嚴重的問題,因為Java錯誤也可以是Throwable的子類。 錯誤是不可更改的條件,無法由Java虛擬機本身控制。 Java虛擬機甚至可能不會在任何錯誤時請求用戶的catch子句。

1.5始終準確地覆蓋自定義異常中的異常,以免丟失堆棧跟蹤

catch (NoSuchMethodException e) { throw new MyServiceException("Some information: " + e.getMessage()); //Incorrect way }

上面的命令可能會損壞主要異常的堆棧跟蹤,并且總是錯誤的。 正確的方法是:

catch (NoSuchMethodException e) {throw new MyServiceException("Some information: " , e); //Correct way }

1.6記錄或拋出異常,但不要同時執行

catch (NoSuchMethodException e) {LOGGER.error("Some information", e);throw e; }

如上面的代碼所示,拋出和記錄可能會在日志文件中導致多個日志消息。 對于試圖瀏覽各種日志的開發人員,代碼中的單個問題可能會造成最壞的情況。

1.7永遠不要從finally塊拋出異常

try {someMethod(); //Throws exceptionOne }finally {cleanUp(); //If finally also threw an exception the exceptionOne will be lost forever }

準確地說,高達cleanUp()永遠不會引發異常。 在上述情況下,如果someMethod()引發異常,并且在finally塊中,cleanUp()引發異常,則該方法之外的其他異常將消失,原始的第一個異常(正確的原因)將永遠消失。

1.8始終僅捕獲那些可以處理的異常

catch (NoSuchMethodException e) { throw e; //Avoid this as it doesn't help anything }

這是一個必不可少的概念,從不捕獲任何異常,因此僅在可以處理任何異常的情況下捕獲任何異常,才能在該異常中提供其他上下文數據。 如果您不能在catch塊中處理它,那么最好的建議是不要僅將其重新拋出就捕獲它。

1.9不要使用printStackTrace()語句

完成代碼后,切勿離開printStackTrace()。 很有可能是您的同事之一,他們最終將獲得那些堆棧跟蹤中的一個,并且對其處理方式的知識完全為零,因為它不會附加任何上下文信息。

1.10如果您不打算處理異常,請使用finally塊而不是catch塊

try {someMethod(); //Method 2 } finally {cleanUp(); //do cleanup here }

這也是一個好習慣。 如果在方法內部訪問某個方法2,并且方法2拋出一些您不想在方法1中處理的異常,但是仍然希望進行一些清除以防萬一發生異常,那么請在finally塊中進行此清除。 不要使用擋塊。

正如我們已經討論過的那樣,java異常處理是必不可少的,有多種實踐可以毫無問題地處理它們。 圖片中出現的最新VPN應用漏洞是Google從其平臺上刪除了一些最佳VPN。 根據研究人員的說法,它具有支持中間人(MITM)攻擊的危險漏洞,因此它僅允許黑客阻止提供者與用戶之間的通信。 甚至將所有用戶重定向到黑客的邪惡服務器,而不是真正的VPN服務器。 因此,谷歌刪除了它們,以保護用戶免受漏洞侵害。 Google確認這種類型的漏洞仍然存在,研究人員通過Google Play安全獎勵計劃(GPSRP)發布了結論。 GPSRP使安全分析人員可以發現安裝次數超過1億次的應用程序的漏洞。

2.結論

本文可幫助您獲得有關處理Java異常的最佳實踐的完整知識。 完全了解它是必不可少的,因為正如我們所討論的,對于初學者和經驗豐富的開發人員而言,這個主題都相當困難。

我們還討論了google和頂級VPN應用之間的問題,即Google從其下載平臺中刪除了許多VPN,并提供了有關VPN應用漏洞問題的完整信息。

翻譯自: https://www.javacodegeeks.com/10-best-practices-to-handle-java-exceptions.html

總結

以上是生活随笔為你收集整理的处理Java异常的10种最佳实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。