2015-10-20 119 views
0

我想具体问这个问题。我为什么要把为什么要在public static void main(String [] args)上抛出异常?

public static void main(String[] args) throws Exception { ... }

,而不是简单地

public static void main(String[] args) { ... }

在程序的顶部。我总是警惕抛出一般例外。我只是想了解在主要方法上抛出异常的目的。

+0

让它崩溃? – skypjack

+1

为什么*应该*你?谁说你*应该*? –

+0

如果你完全没有看到它,它会是什么样子? – SacJn

回答

0

这是一个良好的开端:https://docs.oracle.com/javase/tutorial/essential/exceptions/

例外的是有没有让程序退出“优雅”。例如,如果你的程序有一行读取文件,你的程序可以有FileNotFoundException这将允许它不会崩溃,而是抛出一个异常。你甚至可以输出你自己的评论,以提供有关抛出异常的原因。

0

我可以想到从主要方法抛出Exception没有很好的理由。这似乎是一种代码味道,以避免在整个程序中处理检查的异常。

2

这里是故障。

public static void main(String[] args) throws Exception { ... } 

所有这一切都是文档,该方法可能会引发此异常,并且您明确指出您没有捕获此异常。所以它告诉其他人将使用这种方法,他们需要将这个调用封装在自己的try/catch中,否则就处理它。

因此,在您的情况下,指出您的主要方法抛出任何东西是没有意义的,因为这是应用程序的起点,而且如果存在异常,那么您的应用程序将无法运行。

0

它将检查到的异常委托给JVM,它将在其默认异常处理程序中捕获异常。然后默认的异常处理程序将打印异常的堆栈跟踪并终止主线程。

相关问题