簡體   English   中英

重構方法以引發最多一個檢查的異常,而不是ExecutionException和InterruptedException

[英]Refactor method to throw at most one checked exception instead of ExecutionException and InterruptedException

我有一個類似的方法

public void methodName() throws ExecutionException, InterruptedException {}

SonarQube在此方法上提出了一個問題,建議重構此代碼。

如果我將這些異常替換為Exception (它們都擴展了),則表示拋出Exception太籠統了。

我該如何解決這個問題?

確切的sonarQube消息:重構此方法以引發至少一個檢查的異常,而不是ExecutionException,InterruptedException

sonarQube的詳細提示: https ://sbforge.org/sonar/rules/show/squid:S1160 ? layout = false

我真的沒有答案,但是我想也許有必要更深入地了解“例外”。 我在docs.oracle.com上查找了以下定義:

ExecutionException:嘗試檢索因引發異常而中止的任務的結果時引發的異常。 可以使用Throwable.getCause()方法檢查此異常。

InteruptedException:在活動之前或活動期間,線程在等待,睡眠或以其他方式占用並且線程被中斷時拋出。 有時,一種方法可能希望測試當前線程是否已被中斷,如果已中斷,則立即拋出該異常。 以下代碼可用於實現此效果:if(Thread.interrupted())//清除中斷狀態! 拋出新的InterruptedException();

話雖這么說,也許ExecutionException的性質意味着我們不必擔心捕獲InteruptedException(因為在錯誤處理另一個拋出的異常時會拋出ExcecutionException)。 所以也許我們嘗試這樣的事情:

public void methodName() throws ExecutionException {}

暫無
暫無

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

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