从 Java 程序的主要方法中抛出异常有什么意义?



从Java程序的主方法抛出异常的意义是什么?因为它永远不会被任何调用方法捕获和处理?

下面的内容没有意义,对吧?

public static void main(String[] args) throws ReconToolException {
    parseCmdArgs(args); 
    try {
        CSVSingleton.tryToReadBothFiles(FILE1_PATH, FILE2_PATH);
    } catch (Exception e) {
        e.printStackTrace();
        System.exit(0);
    }
    run();
}

最好是:

public static void main(String[] args) {
        parseCmdArgs(args); 
        try {
            CSVSingleton.tryToReadBothFiles(FILE1_PATH, FILE2_PATH);
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(0);
        }
        try {
            run();
        } catch (ReconToolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

Java应该阻止我们做前者吗?或者在更复杂的框架中,主方法有能力抛出一个异常?

不仅可以捕获抛出的异常,而且可以捕获来自tryToReadBothFiles的异常。

如果你问为什么在main方法上有一个'throws'关键字,我会假设parseCmdArgs可以抛出ReconToolException,这个main的作者要么知道它永远不会被抛出,要么不想处理它。为了使程序编译,他必须做两件事中的一件:为异常添加一个'catch',或者在main中添加一个'throws'。如果计划无论如何都要终止,他做什么都无关紧要。添加'throws'的工作量更少。

相关内容

最新更新