为什么我要在public static void main(String [] args)上抛出一个Exception?

时间:2015-10-20 17:27:16

标签: java main

我想特别提出这个问题。我为什么要把

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

而不是简单

$query = $table->find() ->select([ 'column_one', 'count' => "COUNT(DISTINCT `column_two`)" ]) ->group(['column_one']);

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

4 个答案:

答案 0 :(得分:2)

这是故障。

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

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

因此,在您的情况下,指示您的主要方法抛出任何内容是没有意义的,因为它是应用程序的起点,如果有异常,那么您的应用程序将会不跑。

答案 1 :(得分:0)

这是一个很好的起点:https://docs.oracle.com/javase/tutorial/essential/exceptions/

有例外让程序“优雅地”退出。因此,例如,如果您的程序有一行来读取文件,那么您的程序可以有FileNotFoundException,这样可以使它不会崩溃,而是抛出异常。您甚至可以输出自己的注释,以提供有关抛出异常的原因的提示。

答案 2 :(得分:0)

我认为没有理由从主方法中抛出Exception。这似乎是代码气味,以避免在整个程序中处理已检查的异常。

答案 3 :(得分:0)

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