在测试类的过程中,我发现我的类构造函数可以采用“非法参数”。构造函数需要一个 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
?这是一种有效的做法,还是我可以做得更好?