【问题标题】:Is it possible to remove error pointers without removing intended exceptions?是否可以在不删除预期异常的情况下删除错误指针?
【发布时间】:2016-11-24 21:47:41
【问题描述】:

所以我创建了一个涉及使用异常的程序。除了在我的代码输出中收到不需要的错误指针之外,这似乎工作正常。这是我的代码的输出:

************Herbivore caught Exception example************
java.lang.Exception: Herbivores only eat plants!
Exception caught
************Herbivore non-caught Exception example************
Herbivores eat Vegetables
    at QuestionEditor.Rabbit.eat(Rabbit.java:38)
    at QuestionEditor.Main.main(Main.java:25)

我不想在我的代码中输出最后两行,因为这只是告诉我为什么会出现异常,但如果可能的话,我只想在没有这些额外错误消息指针的情况下打印出异常消息?我正在使用 NetBeans,所以我不确定每个异常程序是否都会发生这种情况,或者我是否做错了什么? 我认为没有必要显示我的程序的代码,因为实际上没有任何错误,并且它正在输出我希望它从这些附加消息中输出的内容,如果您认为我包含代码很重要请发表评论,我将在我的问题中对其进行编辑。首选输出是:

************Herbivore caught Exception example************
java.lang.Exception: Herbivores only eat plants!
Exception caught
************Herbivore non-caught Exception example************
Herbivores eat Vegetables

如果有人能提供帮助,将不胜感激,谢谢。

【问题讨论】:

  • 请包含演示此问题的最小示例代码。
  • 这是由e.printStackTrace() 引起的,您可以将该行更改为System.err.println(e);,但Stacktrace 是查找错误的重要信息,您不应禁止使用它。如果这样做,您应该使用日志框架将堆栈跟踪写入(日志)文件。
  • 啊,非常感谢,因为你的描述。
  • 定义“错误指针”。

标签: java exception


【解决方案1】:

您可以通过Thread.UncaughtExceptionHandler 实现此目的。这允许您添加在给定线程上未捕获异常时执行的代码。在异常处理程序中,您可以打印出错误消息。它的代码:

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {

    @Override
    public void uncaughtException(Thread t, Throwable e) {
       System.out.println(e.getMessage());
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-20
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 2016-02-19
    相关资源
    最近更新 更多