如何从一个方法一次抛出多个异常?例如:
public void doA() throws Exception1, Exception2{
throw new Exception1("test1");
throw new Exception2("test2");
}
如何做出像这样的工作?
编辑:一个条件抛出Exception1和Exception2。可能? 这只是一个测试抛出异常的演示文件。
答案 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语句之后,程序应该在该范围之外执行另一行代码(首先调用堆栈中的代码来处理该异常)。