2017-07-19 11 views
2

コーディングの質を向上させるためにSonarQubeを使用していますが、ここでは最良の解決策がわからないというバグがあります。「スロー」に関連するソナー問題の最適解

私は次のシグネチャを持つSpringのメソッドを呼び出す:

T read() throws Exception, UnexpectedInputException, ParseException, 
NonTransientResourceException; 

私はちょうどこのメソッドを呼び出す必要があり、私はすべてのエラーを処理する意図を持っていないので、私はこのように私のメソッドを定義した:

ItemTransacaoEnvioVO read() throws 
UnexpectedInputException, ParseException, NonTransientResourceException, 
Exception 

しかし、私はこのソナーのバグを取得:

Remove the declaration of thrown exception 
'org.springframework.batch.item.ParseException' which is a subclass of 
'java.lang.Exception' 
... 
etc 

その後、私はソナーのように変更が望んでいる:

ItemTransacaoEnvioVO read() throws Exception 

そして、私はこれを取得:

Define and throw a dedicated exception instead of using a generic one. 

のベストプラクティスに考えると、この問題のために最善の解決策になるか質をコーディング?

Java 8、Sonar

+0

あなたの質問にSonarJavaのバージョンを含めるように編集してください(Update Centerにあります:**管理>システム>アップデートセンター**) –

答えて

0

一般的な例外をスローしないでください。 Exceptionをサブクラス化してサブクラスを投げて、例外の型が何が起こっているのかの情報を実際に提供し、関数のクライアントがそれを適切に捕まえて処理できるようにする必要があります。

+0

唯一のポイントは、Springがこれらの例外をスローすることです。一般的なものはSpringから来ています。 –

1

あなたがExceptionUnexpectedInputExceptionParseExceptionNonTransientResourceException、 かを処理することを計画している場合、あなたのカスタムクラスのユーザーは、これらの例外、 を扱うようにしたい場合は、問題が許容可能であり、あなたは偽陽性それをマークしたりしませんすることができますあなたのSonarQubeで修正してください。

しかし、カスタムクラスのユーザーやそれらのすべての低レベル例外を個別に処理することには興味はありません。 その場合、 カスタム例外を定義して を定義して、その例外をスローします。 Springの例外をすべてキャッチし、誰かが元の原因を見たい場合に備えて、カスタム例外でそれらを保持します。

+0

ここでの唯一の点は、Springはあまりにも多くの例外をスローすることです。私じゃない。 –

+0

@SérgioCamposdaFonseca良い点。私は自分の答えを書き直した。 – janos

関連する問題