从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'的工作量更少。