クラスのテスト中に、クラスコンストラクターが「不正な引数」を取る可能性があることを発見しました。コンストラクターはURIを期待していました。明らかに、渡された引数がURIであることを示唆するものがない場合は、。をスローしますIllegalArgumentException
。
私のコンストラクターは、最初に渡された引数をテストして、それが有効なURIであるかどうかを確認しました(そこからファイルを作成することによって)。次に、これを変更してファイルの作成を試み、をキャッチしましたIllegalArgumentException
。catch
私のブロックの本体では、私は単に次のことを行います。
throw new URISyntaxException(passedArgument, message)
これは、スローされる可能性のある例外をキャッチするための有効な方法ですか、それとも他の方法で実行する必要がありますか?
また、テスト中にこの問題を見つけたので、期待する例外をスローするようにコードを変更するだけで正当化されますか(これは、ユーザーに提示してログに記録するより明白なエラーです)?
編集1:コメントに応えて、これが私のコードの例です:
public myClass (String fileName) throws URISyntaxException {
try {
fileToRead = new File(fileName);
if ( !fileToRead.canRead() ) { //confirm we can read the passed file
// if not, throw a URI error
throw new URISyntaxException(fileName, 'bad filename passed, please check path and try again');
}
} catch ( IllegalArgumentException e ) {
throw new URISyntaxException(fileName, 'bad filename passed, please check path and try again');
}
}
catch
本質的に私の質問は、?のブロック内でURI例外をスローすることは有効ですIllegalArgumentException
か?これは有効な方法ですか、それとももっとうまくできますか?