![](/img/trans.png)
[英]SonarQube error: Refactor this method to throw at most one checked exception
[英]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.