在java中同时发生多个异常

时间:2013-11-05 19:15:31

标签: java exception throw

我有一个方法可能会收到无效的输入值或带有相关错误消息的输出。

对于这两种情况,我想抛出异常。所以这两种情况都可能发生在单个方法调用中。那么当异常同时发生时,如何将其作为单个异常处理!!

5 个答案:

答案 0 :(得分:2)

看起来您正在尝试使用例外进行验证。这可能有用,但是如果你想要弄清楚你想要验证的东西有什么问题,那么你需要做一些不同的事情。一些伪代码给你一个大概的想法:

public ValidationResult validateInput(Input input) {
    ValidationResult result = new ValidationResult();
    if (input.someField() == null) {
      result.addError("Some field cannot be null");
    }
    //etc
    return result;
 }

这个想法是你有一个ValidationResult对象,它将存储输入错误的所有内容。验证完成后,您可以按照以下方式处理:

ValidationResult result = validateInput(someInput);
if (result.hasErrors()) {
 for (ErrorMessage message : result.getErrors()) {
   log.error(message.getMessage());
 } else {
   //success
}

您可以编写自己的ValidationResult类或研究验证框架,以找到适用于此目的的框架。

答案 1 :(得分:1)

同时抛出多个异常是不可能的,如果声明你的方法抛出几个异常,那么它们中的一个会被抛出。例如:

public void method() throws Exception1, Exception2 {
    if (firstCondition)
        throw new Exception1();
    if (secondCondition)
        throw new Exception2();
    // body of method
}

在上面的玩具示例中,将出现第一个或第二个条件,但它们不能同时发生,其中一个将首先为真,然后将引发相应的异常。

答案 2 :(得分:1)

两个例外不可能永远不会同时发生。

当抛出一个异常时,另一个异常并不重要,因为代码流不再在该方法上。

答案 3 :(得分:1)

一段代码不可能同时抛出多个异常。将抛出在代码路径中触发的第一个。

答案 4 :(得分:1)

每个线程都有一个堆栈,异常意味着弹出一个框架,这意味着返回给调用者。所以不,在同一个线程中同时发生两个异常是没有意义的。