我想特别提出这个问题。我为什么要把
public static void main(String[] args) { ... }
而不是简单
$query = $table->find()
->select([
'column_one',
'count' => "COUNT(DISTINCT `column_two`)"
])
->group(['column_one']);
在程序的顶部。我总是警惕抛出一般的例外。我只是想了解在main方法上抛出Exception的目的。
答案 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,它将在其默认异常处理程序中捕获异常。然后,默认的异常处理程序将打印异常的堆栈跟踪并终止主线程。