【发布时间】:2013-03-17 03:53:53
【问题描述】:
我在 C 中使用了abort() 使我的程序崩溃。调试器会捕获它。
Java 中的等价物应该是例外。但是 Java 也有非常严格的异常链策略,所以使用异常来调试似乎不是一个好主意。
我应该在 Java 中为此使用什么?出于调试目的而故意的程序崩溃,可以被调试器捕获。 (我使用的是 Eclipse)
更新
如果代码可以在发布构建时选择退出,那就太好了。
【问题讨论】:
我在 C 中使用了abort() 使我的程序崩溃。调试器会捕获它。
Java 中的等价物应该是例外。但是 Java 也有非常严格的异常链策略,所以使用异常来调试似乎不是一个好主意。
我应该在 Java 中为此使用什么?出于调试目的而故意的程序崩溃,可以被调试器捕获。 (我使用的是 Eclipse)
更新
如果代码可以在发布构建时选择退出,那就太好了。
【问题讨论】:
在 Eclipse 中,您可以设置调试点,并在调试模式下运行。
也就是说,CheckedException(必须被调用函数捕获或向上传递)和UncheckedException(更接近您想要的)之间存在差异。如果您想强制崩溃,请抛出后者。
但是,这通常是一种糟糕的编程方式。使用替代方法来捕获所需的错误,您会发现更好的结果。
【讨论】:
您可以使用assert(false)。假设您使用 Eclipse 作为调试器,您可以 set Eclipse to break on specific exceptions(在本例中为 AssertionError)。确保你enable assertions,否则它不会做任何事情。
由于您必须明确告诉 JVM 启用断言,我认为这将算作 “可以在发布构建时选择退出的代码。”
【讨论】:
我不知道如何在 Eclipse 中处理它。但是,在 JDB 下,这可以通过捕获异常来完成。 Eclipse应该有这样的接口。
像这样使用命令行
"catch java.io.FileNotFoundException"
详情请参考here
【讨论】: