目标是能够做到:
throw new RuntimeException();
没有它打印:
Exception in thread "main" java.util.RuntimeException
at grame.GrameManager.add(GrameManager.java:40)
at grame.GrameManager.add(GrameManager.java:47)
at grame.Entity.<init>(Entity.java:56)
at grame.Entity.<init>(Entity.java:28)
at test.Test.main(Test.java:20)
(例如)。
这可能吗?如果是这样,我将如何做到这一点?
答案 0 :(得分:3)
您可以通过设置System.setErr(null);
答案 1 :(得分:3)
由于异常很重要,您可以使用log4j(http://logging.apache.org/log4j/1.2/)之类的日志记录机制,并在不希望出现某些异常时将日志记录设置为其他级别例如,打印或登录到文件而不是控制台。
如果您不关心异常,请抓住它并对其执行任何操作(空捕获,这很糟糕)。
答案 2 :(得分:2)
没有抛出的异常直接生成到错误控制台的堆栈跟踪。这取决于调用它的代码。在主程序的情况下:
public static void main(String args[]) throws Exception {
// do something that throws an exception
}
如果您没有捕获异常,系统实际上会将其吐出到我相信的控制台。
在此过程中,您需要处理异常。如果在GUI中显示它是你想要的,那么你将不得不做这样的事情:
public interface ExceptionHandler {
void handleException(Exception e);
}
public static void main(String args[]) {
ExceptionHandler exceptionHandler = ...;
try {
// something that might throw an exception
}
catch (Exception e) {
exceptionHandler.handle(e);
}
}
答案 3 :(得分:1)
抓住异常,不要在catch块中放任何东西。
我应该补充一点,这样做通常是一个坏主意。在查找程序中出现的问题时,拥有该堆栈跟踪或某种消息非常有用。
答案 4 :(得分:1)
如果您希望方法在不打印堆栈跟踪的情况下终止程序,请将其放在try / catch块中,并在catch下使用语句:
System.exit(1)
这使系统知道程序以不规则(非零)状态退出,但不向System.err打印任何内容。
答案 5 :(得分:0)
你真正需要做的就是抓住它...但是,这是一个非常糟糕的主意。您可能想要制作自己的例外并抓住它。这样你就不会吞下你不应忽视的异常。你应该真正考虑这样做的唯一一次,就是你不能允许你的应用程序爆炸。如果是这种情况,那么您至少应该记录错误。
This比我更好地解释它(无论如何都是一个很好的资源)。基本上,它表明:
“如果可以合理地期望客户从异常中恢复, 成为一个 检查异常。如果客户端无法执行任何操作以从异常中恢复, 使它成为未经检查的例外“。
答案 6 :(得分:0)
像这样:
try {
some code...
} catch (RuntimeException e) {
}
答案 7 :(得分:0)
1。 Java compiler
在编译期间只关心您尝试了一下,无论您在catch中实现任何代码还是不强>
2. 您可以将阻止块清空,或在控制台上打印,记录它。等等。 ... 强>
<强>例如强>
try{
}catch(Exception ex){
}
3。但printStackTrace()
会打印method name
,class name
,file name
和line number
所在的例外情况已经发生。