繁体   English   中英

怎么能让我的功能崩溃?

[英]How can I let my function crash?

在某些情况下,我希望我的功能只是崩溃,我的应用程序停止执行:

public void foo() {
    if(lifeIsWorthLiving) {
        /*code ...*/
    }
    else {
        /* log the problem, throw an exception and die */ 
    }
}

现在如果我添加throw Exception("lifeIsWorthLiving = false !!!"); 然后我需要在函数定义中添加throws Exception ,然后我必须处理这个我调用foo() 我不想那样做。 我怎样才能做到这一点?

您可以抛出未选中的RuntimeException或其子类。 根据JLS§11.2

11.2编译时检查异常

Java编程语言的编译器在编译时检查程序是否包含已检查异常的处理程序,方法是分析执行方法或构造函数可能导致的检查异常。 对于每个可能结果的已检查异常,方法或构造函数的throws子句必须提及该异常的类或该异常的类的一个超类。
...
未经检查的异常类RuntimeException类及其子类,以及类Error及其子类。 所有其他异常类都是已检查的异常类。

抛出RuntimeException或者Error ,取决于问题的性质。 两者都不需要在throws声明。 最后一种方法是调用System#exit()

throw new RuntimeException("lifeIsWorthLiving = false !!!");

您可以像其他人建议的那样抛出RuntimeException ,或者更好的是,抛出一个错误 - Error不会被处理任何类型的Exceptioncatch块意外捕获和处理。 这假设您可以使用Throwable “杀死”您的程序,而不是正常关闭它。

抛出RuntimeException 如果你不愿意,你不需要在任何地方处理它。

你可以添加throw Exception("lifeIsWorthLiving = false !!!"); 在try catch块中

要不就

void foo(){
        throw new Error(); // in place of exception
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM