在某些情况下,我希望我的功能简单地崩溃,我的应用程序停止执行:
public void foo() {
if(lifeIsWorthLiving) {
/*code ...*/
}
else {
/* log the problem, throw an exception and die */
}
}
现在,如果我添加throw Exception("lifeIsWorthLiving = false !!!");
,那么我需要将throws Exception
添加到函数定义中,然后我必须在调用foo()
的任何地方处理此问题。我不想那样做。我怎么能这样做?
答案 0 :(得分:6)
您可以抛出未选中的RuntimeException
或其子类。根据{{3}}:
11.2编译时检查例外
Java编程语言的编译器在编译时检查程序是否包含已检查异常的处理程序,方法是分析执行方法或构造函数可能导致的检查异常。对于每个可能结果的已检查异常,方法或构造函数的
throws
子句必须提及该异常的类或该异常类的一个超类。 ...
未经检查的异常类是类RuntimeException
及其子类,以及类Error
及其子类。所有其他异常类都是经过检查的异常类。
答案 1 :(得分:6)
根据问题的性质,抛出RuntimeException
或Error
。两者都不需要在throws
中声明。最后一种方法是拨打System#exit()
。
答案 2 :(得分:1)
throw new RuntimeException("lifeIsWorthLiving = false !!!");
答案 3 :(得分:1)
你可以像其他人一样推荐RuntimeException
,或者更好的是抛出Error - Error
的优势不会被{{1}意外捕获和处理阻止处理任何类型的catch
更远。这假设您可以使用Exception
“杀死”您的程序,而不是正常关闭它。
答案 4 :(得分:0)
抛出RuntimeException。如果你不愿意,你不需要在任何地方处理它。
答案 5 :(得分:0)
你可以在try catch block中添加throw Exception("lifeIsWorthLiving = false !!!");
或只是
void foo(){
throw new Error(); // in place of exception
}