簡體   English   中英

如何在不違反SonarQube的前提下引發檢查異常?

[英]How can you throw a checked exception without violating SonarQube?

有一個SonarQube規則,該規則指出“ ...沒有方法拋出新的已檢查異常。

並給出以下代碼示例:

public void myMethod1() throws CheckedException {
  ...
  throw new CheckedException(message);   // Noncompliant
  ...
  throw new IllegalArgumentException(message); // Compliant; IllegalArgumentException is unchecked
}

public void myMethod2() throws CheckedException {  // Compliant; propagation allowed
  myMethod1();
}

那么如何才能實際引發自定義檢查異常?

假設我捕獲了IOException並執行getMessage()以獲取IOException的詳細消息字符串。

然后讓條件檢查字符串的內容以引發更特定的自定義檢查異常(擴展Exception)。

在不違反SonarQubes規則(我不throw new CheckedException(message);情況下,我如何實際完成此操作throw new CheckedException(message);

這條規則是否意味着SonarQube從不希望開發人員拋出新的自定義檢查異常?

這是從規則

檢查異常的目的是確保通過傳播錯誤或通過處理錯誤來處理錯誤, 但有些人認為 ,通過將錯誤處理/傳播邏輯傳播到各處,檢查異常會對源代碼的可讀性產生負面影響。

該規則驗證沒有方法拋出新的檢查異常。

這不是絕對的規則。 如果要防止人們在代碼中引發檢查異常,這取決於您。
請記住,聲納規則只是規則,如果您不同意某些規則,只需禁用它們即可。 尤其是這個看起來很基於意見。

如果你無法禁用它,作為解決該問題won't fix ,並添加評論,說明你需要拋出此異常,因為結構需要如此。

我個人認為檢查異常有點煩人,但我不會啟用此規則,我認為它不相關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM