在JAVA中处理Catch块中的多个Throwable

在JAVA中处理Catch块中的多个Throwable,java,performance,optimization,coding-efficiency,Java,Performance,Optimization,Coding Efficiency,我从子方法和嵌套方法中抛出多个错误。它们产生了不同类型的异常。例如:空指针异常、连接异常、非法状态异常。我可以用多个catch块或一个catch块中的多个if语句捕捉它们 我想写一些干净的代码。我不想使用重复的东西。是否有其他方式或方法来实现这一点。我将异常分为两类:您需要修复的异常和您的用户需要修复的异常 因此,如果您得到一个NullPointerException,这是您应该解决的问题 同样,在ConnectException的情况下,这可能是要向用户报告的内容。这不是编程问题,而是网络问题

我从子方法和嵌套方法中抛出多个错误。它们产生了不同类型的异常。例如:空指针异常、连接异常、非法状态异常。我可以用多个catch块或一个catch块中的多个if语句捕捉它们


我想写一些干净的代码。我不想使用重复的东西。是否有其他方式或方法来实现这一点。

我将异常分为两类:您需要修复的异常和您的用户需要修复的异常

因此,如果您得到一个NullPointerException,这是您应该解决的问题


同样,在ConnectException的情况下,这可能是要向用户报告的内容。这不是编程问题,而是网络问题。

您所描述的是将多个catch块折叠在一起。至少从Java8开始,这是可能的

下面是一个捕获三种不同异常类型并以相同方式处理它们的示例:

try {
    // do things here
} catch (IllegalAccessException | IllegalStateException | ConnectException e) {
    // handle exceptions here
}
也可以有多个折叠的捕捉块。下面是一个例子:

try {
    // do things here
} catch (IllegalAccessException | IllegalStateException | ConnectException e) {
    // handle exceptions here
} catch (IllegalArgumentException | IllegalMonitorStateException e) {
    // handle these exceptions differently from the first set
}

请发布您编写的代码,然后我们可以提出更改建议。如果您不想在各种catch块中重复代码,那么您可以捕获Throwable,它被扩展为Error和Exception。但这假设你真的,真的想对所有类型的问题做同样的事情,我也这么认为。然而,在大项目上工作。我们无法解决所有问题,也无法正确警告用户我希望针对不同的异常使用不同的消息警告用户。例如对于连接异常,连接失败。对于NullPointer异常,无法创建null@YusufErdoğan不应该抛出NullPointerException,因为它们都是bug。您写道,您无法修复所有问题,但您的用户也不会这样做。对于Bug,我会让他们看到一些糟糕的事情。然后给我自己发一份报告,这样我就能修好它。