2017-07-12 17 views
0

Javaでは、tryブロックにスローされない例外をキャッチするのはコンパイル時エラーですが、コンパイル時エラーではありませんたとえそのメソッドが実際にその例外をスローできない場合でも、スローされたチェック例外をメソッド内で宣言します。メソッドが宣言されたチェック例外をスローできない場合にJavaコンパイラを設定します

しかし、eclipseでは、これをコンパイラの設定(http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Freference%2Fpreferences%2Fjava%2Fcompiler%2Fref-preferences-errors-warnings.htm)で変更することができます。

コンパイラフラグを使用して標準のJavaコンパイルプロセス中にこの同じ動作を実行できますか?具体的には、このチェックをmavenビルドに統合したいと考えています。宣言されていない例外は、不要なcatchブロック、エラーハンドラ、単体テストを生成し、既存のコードのさらなるデバッグと拡張を邪魔し、これらの例外をキャッチしてテストする無駄な、不要な努力をもたらします。

Javaコンパイラを使用して「クリーン」なコーディング標準を適用できますか?

答えて

1

Javaコンパイラで「クリーナー」コーディング規格を適用できますか? Javaの9までのJavaのバージョンの

、答えはNoですか、少なくとも、それはjavacマニュアル(7、8 & 9)私に言っているものです。

すべての警告(-Xlint:all)を有効にして、冗長throws句の警告メッセージが表示されるかどうかを確認する方法です。実際


Javaでは

、それはtryブロックでスローされていない例外をキャッチしようとすると、コンパイル時エラーがある...これは

チェックされた例外に対してのみ真です。多くの場合、チェックされていない例外がスローされる可能性があるかどうかは、コンパイラが判断できません。

+0

私は、チェックされたチェックされていない例外のスロー宣言は私の質問から暗黙で明確であると思っていましたが、再読み込み後、あなたは正しいです。私はそれを明示しなかった。 –

+0

悲しいことに、-Xlintを指定しても、すべてのjavacがエラーなしで次のメソッドをコンパイルします。 パブリッククラスMyClass { public void test()throws java.io.IOException { System.err.println( "例外はありません!"); } } –

+0

私はそれが起こると思いました。 –

関連する問題