【发布时间】:2014-08-04 08:30:13
【问题描述】:
从Java程序的main方法中抛出异常有什么意义, 因为它永远无法被任何调用方法捕获和处理?
以下内容真的没有意义吗?
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 应该阻止我们做前者吗?或者也许在更复杂的框架中,主方法有能力将异常进一步抛出链?
【问题讨论】:
-
从
main()抛出异常将打印堆栈跟踪,无需任何额外代码。这意味着两个示例的行为是相同的。第一个是打字少很多。 -
是什么让你认为它没有被抓到? jre 本身会捕获它。而且它是一个公共方法,任何其他代码都可以包装它并调用它并捕获它。
-
不......你不能在 main 方法周围包装代码!