java - 按类捕获异常?

标签 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 类异常,但对于任何其他异常,让它向上抛出,直到它被上面的测试框架处理”?

编辑:我想提供一些理由说明我为什么要这样做,因为有一些答案(现已删除)质疑默默地吃掉一个异常(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/

相关文章:

java - 在Java服务器和多个Web浏览器之间是否存在用于数据同步的框架?

c# - wcf FaultException 原因

java - 结果集在 .next() 第一次迭代时关闭异常

java - 提取句子中连续单词的正则表达式

java - 运行时异常无法启动 MainActivity

java - Jodah 故障安全库超时时间比预期要长

java - 澄清java异常赋值中所要求的内容

java - Servlet 的 UTF-8 响应

java - 在 Java 中重试超时连接

java - 什么是NullPointerException,我该如何解决?