从一种方法中抛出多个异常

时间:2014-03-06 15:42:07

标签: java exception throw

如何从一个方法一次抛出多个异常?例如:

public void doA() throws Exception1, Exception2{
    throw new Exception1("test1");
    throw new Exception2("test2");
}

如何做出像这样的工作?

编辑:一个条件抛出Exception1和Exception2。可能? 这只是一个测试抛出异常的演示文件。

5 个答案:

答案 0 :(得分:9)

你应该检查抛出Exception的方法中是否有正确的东西。这是一个示例:

public void doA() throws Exception1, Exception2 {
    if (<some unexpected condition>) {
        throw new Exception1("test1");
    }
    if (<another unexpected condition>) {
        throw new Exception2("test2");
    }
    //rest of the implementation...
}

如果你的意思是如何同时抛出几个异常,那是不可能的,因为抛出异常会破坏方法的执行(类似于return)。你一次只能抛出一个Exception

答案 1 :(得分:1)

您一次只能抛出一个例外。你不能做你想要的。相反,考虑在代码中使用自定义异常,并根据具体情况使用它们(我不确定你需要抛出两个异常的原因):

class CustomException extends Exception
{
    //Parameterless Constructor
    public CustomException() {}

    //Constructor that accepts a message
    public CustomException(String message)
    {
     super(message);
    }
}

然后在需要时抛出它:

public void doA() throws Exception1, Exception2{
   throw new CustomException("test1, test2");
}

答案 2 :(得分:0)

如果您的问题是如何从方法同时抛出多个例外那么答案就是您不能。抛出第一个异常后,控件退出此方法,并且Exception在其父方法中滚动。如果没有任何东西可以捕获它,那么它会转到它的父方法等等......

答案 3 :(得分:0)

我认为不可能一次抛出多个异常。

但是,根据需求,当您需要在上下文中传递(原文如此)第二个异常时,可以抛出嵌套异常:

throw new Exception("My exception", new Exception("The cause of My Exception"));

答案 4 :(得分:0)

抛出异常是将控制单向转移到另一行代码(如汇编语言中的跳转)。这意味着在throw语句之后,程序应该在该范围之外执行另一行代码(首先调用堆栈中的代码来处理该异常)。