按类抓住异常?

时间:2010-12-02 23:48:37

标签: java exception

我想抓住我期望的例外,但允许其他人通过。

我现在遇到的解决方案是:

protected void perfromCall(Class expectedException) throws Exception {
    try {
        response = call.call(request);
    } catch (Exception e) {
        if (!expectedException.isInstance(e)) {
            throw new Exception(e);
        }
    }
}

虽然这会默默地吃掉我想要的预期异常并扔掉其他异常,但我不喜欢的是它包装了意外的异常,现在我必须在调用者中捕获意外而不是之前(在尝试之前)默默地捕获预期的异常)我可以让它们冒泡到测试框架以使测试失败。

是否有一种更清晰的方式来说“我期望A类的异常,但对于任何其他异常,让它被抛到链上直到它由上面的测试框架处理”?

编辑:我想提供一些理由来说明为什么我要这样做,因为有些答案(现已删除)质疑默默地吃异常。这适用于调用服务的测试框架。某些测试将错误的参数传递给服务,因此他们期望服务因捕获无效请求而抛出异常。因此,我想默默地吃掉预期的异常,但仍然让意外的异常冒泡并且测试失败。

1 个答案:

答案 0 :(得分:7)

protected void perfromCall(Class<?> expectedException) throws Exception {
    try {
        response = call.call(request);
    } catch (Exception e) {
        if (!expectedException.isInstance(e)) {
            throw e;
        }
    }
}