我想捕获我期望的异常,但允许其他异常通过。
目前我想到的解决方案是:
protected void perfromCall(Class expectedException) throws Exception {
try {
response = call.call(request);
} catch (Exception e) {
if (!expectedException.isInstance(e)) {
throw new Exception(e);
}
}
}
虽然这会像我希望的那样默默地吃掉预期的异常并抛出其他异常,但我不喜欢它的是它包装了意外的异常,现在我必须在调用者中捕获意外的异常,而以前(在尝试之前)静静地捕获预期的异常)我可以让它们冒泡到测试框架以使测试失败。
有没有一种更简洁的方式来表达“我期望 A 类异常,但对于任何其他异常,让它向上抛出,直到它被上面的测试框架处理”?
编辑:我想提供一些理由说明我为什么要这样做,因为有一些答案(现已删除)质疑默默地吃掉一个异常(exception)。这是用于调用服务的测试框架。一些测试将错误的参数传递给服务,因此他们期望服务因捕获无效请求而抛出异常。因此,我想默默地吃掉预期的异常,但仍然让意外的异常冒出来而无法通过测试。
最佳答案
protected void perfromCall(Class<?> expectedException) throws Exception {
try {
response = call.call(request);
} catch (Exception e) {
if (!expectedException.isInstance(e)) {
throw e;
}
}
}
关于java - 按类捕获异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4341214/