Dav*_*veM 2 java exception-handling
在测试类时,我发现我的类构造函数可以采取"非法参数".构造函数期待一个URI.显然,如果没有任何迹象表明传递的参数是一个URI,那么它会抛出一个IllegalArgumentException.
我的构造函数最初测试了传递的参数,看它是否是一个有效的URI(通过从中创建一个文件).然后我修改了这个以尝试创建文件并捕获IllegalArgumentException.在我的catch块体中,我只是这样做:
throw new URISyntaxException(passedArgument, message)
Run Code Online (Sandbox Code Playgroud)
这是捕获可能引发的异常的有效方法,还是应该以其他方式执行?
另外,当我在测试时发现这个问题时,我是否有理由简单地修改代码以抛出我期望的异常(哪个更明显的错误呈现给用户,并放入日志中)?
编辑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');
}
}
Run Code Online (Sandbox Code Playgroud)
本质上我的问题是,在catch块的内部抛出URI异常是否有效IllegalArgumentException?这是一种有效的做法,还是我能做得更好?
| 归档时间: |
|
| 查看次数: |
188 次 |
| 最近记录: |