如何使可运行的Jar程序不会无声地失败?

Pac*_*ier 5 java windows deployment error-handling executable-jar

对于我创建的可运行Jar程序,如果从命令提示符(java -jar myprogram.jar)运行它,我可以读取未处理的异常.

示例代码:

public static void main(String args[]) {
    try {
        EntireProgram();
    } catch (Throwable t) {
        throw new Error("somehow our error handling code has errors");
    }
}

public static void EntireProgram() {
    System.out.println(1 / 0);
}
Run Code Online (Sandbox Code Playgroud)

命令行输出:

在此输入图像描述

但是,如果我通过双击它来运行Jar程序(预期大多数最终用户),则未处理的异常保持静默.我注意到这与"本机Windows程序"形成对比,我认为这些程序有未处理的操作系统默认处理程序处理的异常(模态对话框消息):

在此输入图像描述

在此输入图像描述 在此输入图像描述

以这种方式处理未处理的异常的优点是用户将知道发生了错误(并且可能会报告它,希望如此).

如何以这种方式处理程序的未处理异常?

use*_*725 1

为什么不在 catch 块中添加这样的一行......无论您如何运行应用程序,它都会向您显示错误消息。

javax.swing.JOptionPane.showMessageDialog(null,"Something is really wrong..Hence notifying you..");
Run Code Online (Sandbox Code Playgroud)