当运行不应该运行的代码时,我应该抛出什么异常?

时间:2014-09-14 14:12:14

标签: java exception

if (stuff) doThings();
else if (something) doOtherThings();
else if (otherStuff) doStuff();
else // .. this isn't supposed to be reached

在如上所述的情况下,我喜欢将else放在最后,以便在程序运行不应运行的代码时通知我,这意味着出现了问题(即上述之一)条件应该是真的,但都不是,这意味着有些事情是错误的。)

我应该在最后的其他方面抛出什么异常,通知我出了什么问题?

2 个答案:

答案 0 :(得分:8)

IllegalStateException是一个很好的候选人。

正如Java API所述:

  

表示在非法或不适当的时间调用了某个方法。换句话说,Java环境或Java应用程序未处于所请求操作的适当状态。

换句话说,您的program处于没有为其定义转换的状态"这不应该到达"输入

如果您的stuffsomethingotherStuff都与您的方法参数相关,您还可以使用IllegalArgumentException,例如:

if (arg == null) doThings();
else if (arg.endsWith("foo")) doOtherThings();
else if (arg.endsWith("bar")) doStuff();
else throw new IllegalArgumentException(
        "arg should be null or end with \"foo\" or \"bar\"");

答案 1 :(得分:3)

您可以通过扩展Exception类来创建自己的自定义异常类。

例如:

class CustomException extends Exception {
    ...
}

然后:

if (stuff)
    doThings();
else if (something) 
    doOtherThings();
else if (otherStuff) 
    doStuff();
else
    throw new CustomException();