public static void main(String[] args) throws IllegalArgumentException {
if (args[0].matches(".*\\w.*")) {
throw new IllegalArgumentException("Can't input characters!");
}
String input = insertSpaces(args[0]);
args = input.split("\\s+");
printAnswer(calculate(args),args);
}
在上面的代码中,main方法抛出IllegalArgumentException。如何捕获main方法抛出的异常?我问的原因,如果我不正确请纠正我,是因为我的理解是当方法抛出异常时,方法的调用者负责捕获异常。在这种情况下,主要方法没有其他方法调用它,所以我无法弄清楚如何捕获异常。我猜测JVM正在幕后工作以调用方法,但是我如何让JVM捕获execption。如果可能,请提供CODE以及解释。否则解释为什么不可能。
答案 0 :(得分:1)
最佳做法是在main
方法调用上避免它们并处理它并向用户显示有关发生的事情的有意义的消息并决定继续或终止。
正如Joe C所提到的,你可以让它抛出,以便JVM处理,用户或调用者将看到堆栈跟踪。当你做出这样的决定(使用主要的抛出)时,你就无法对异常做任何事情。即您收到所需的文件名为arg但文件不存在。如果你不想记录到外部资源,你可能想让JVM打印堆栈跟踪
答案 1 :(得分:0)
不要从main
方法中抛出异常。
不要让main
方法因异常而崩溃。
IllegalArgumentException
是程序员搞乱的结果。解决你搞砸的事情。
不要抓住它,防止它。