【问题标题】:How to make runnable Jar programs that do not fail silently?如何制作不会静默失败的可运行 Jar 程序?
【发布时间】:2014-09-17 02:10:58
【问题描述】:

对于我创建的 runnable Jar programs,如果我从命令提示符 (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);
}

命令行输出:

但是,如果我通过双击运行 Jar 程序(大多数最终用户应该这样),未处理的异常将保持静默。我注意到这与“本机 Windows 程序”形成对比,我认为后者具有由操作系统默认处理程序(模式对话框消息)处理的未处理异常:

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

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

【问题讨论】:

    标签: java windows deployment error-handling executable-jar


    【解决方案1】:

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

    javax.swing.JOptionPane.showMessageDialog(null,"Something is really wrong..Hence notifying you..");
    

    【讨论】:

    • 我认为这行不通。我遇到了一个问题,我的基于swing 的应用程序需要Java1.6 及更高版本,但是当我在较低版本的Java 中执行该应用程序时,它没有显示任何内容,即使我在catch 块中给出了showMessageDialog,因为有一个错误叫ClassNotFoundError
    • @user3505725,仍然会有错误。我们不能期望代码没有错误,因此我们不能期望错误处理代码(showMessageDialog)没有错误。我们如何将错误处理的责任转移给操作系统?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多