我想具体问这个问题。我为什么要把为什么要在public static void main(String [] args)上抛出异常?
public static void main(String[] args) throws Exception { ... }
,而不是简单地
public static void main(String[] args) { ... }
在程序的顶部。我总是警惕抛出一般例外。我只是想了解在主要方法上抛出异常的目的。
我想具体问这个问题。我为什么要把为什么要在public static void main(String [] args)上抛出异常?
public static void main(String[] args) throws Exception { ... }
,而不是简单地
public static void main(String[] args) { ... }
在程序的顶部。我总是警惕抛出一般例外。我只是想了解在主要方法上抛出异常的目的。
这是一个良好的开端:https://docs.oracle.com/javase/tutorial/essential/exceptions/
例外的是有没有让程序退出“优雅”。例如,如果你的程序有一行读取文件,你的程序可以有FileNotFoundException
这将允许它不会崩溃,而是抛出一个异常。你甚至可以输出你自己的评论,以提供有关抛出异常的原因。
我可以想到从主要方法抛出Exception
没有很好的理由。这似乎是一种代码味道,以避免在整个程序中处理检查的异常。
这里是故障。
public static void main(String[] args) throws Exception { ... }
所有这一切都是文档,该方法可能会引发此异常,并且您明确指出您没有捕获此异常。所以它告诉其他人将使用这种方法,他们需要将这个调用封装在自己的try/catch中,否则就处理它。
因此,在您的情况下,指出您的主要方法抛出任何东西是没有意义的,因为这是应用程序的起点,而且如果存在异常,那么您的应用程序将无法运行。
它将检查到的异常委托给JVM,它将在其默认异常处理程序中捕获异常。然后默认的异常处理程序将打印异常的堆栈跟踪并终止主线程。
让它崩溃? – skypjack
为什么*应该*你?谁说你*应该*? –
如果你完全没有看到它,它会是什么样子? – SacJn