java - 对 System.err 应用监听器?

标签 java javafx error-handling exception

我有这样的想法,只要我的 JavaFX 程序中发生未处理的异常,我就可以向用户显示警报,而不是依赖控制台输出。我想也许我可以捕获 System.err 的输出来使用。这是我到目前为止所尝试过的。

    PrintStream myStream = new PrintStream(System.err) {
        @Override
        public void println(String s) {
            super.println(s);
            Log.debugLog(s); //this function logs to a file and displays an alert to user
        }
    };
    System.setErr(myStream);

如果我将 System.err 替换为 System.out,并将 System.setErr 替换为 System.setOut,则此代码段有效。然而,这是捕获 System.out,而不是 System.err。我想更好的问题是,当向控制台显示错误时,System.err 到底调用什么函数?所以这可能会覆盖它。任何提示表示赞赏。

最佳答案

我认为你的方法是错误的。如果您想在出现未处理的异常时向用户显示警报,可以通过设置 DefaultUncaughtExceptionHandler 来实现:

Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
       // show alert to user
       e.printStackTrace();
       // do whatever you want with the Exception e

    });

关于java - 对 System.err 应用监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54592894/

相关文章:

java - 使球弹跳停止

javafx - 向 JavaFX 应用程序添加状态栏的推荐方法是什么?

java - 如何将模态对话附加到 JavaFX 中的主窗口?

javascript - 如何从 Node.js 上的错误对象中读取错误消息作为字符串

android - 崩溃的 Android 应用程序的反馈消息出现在哪里?

java - Jooq - 子类型的通用获取

java - 从 Java 打开文件

java - 使用 maven 的带有 struts2、spring 和 JPA 的谷歌应用程序引擎

JavaFX 获取单个调整大小事件

error-handling - ANTLR4语法无法识别20为数字