我想具體問這個問題。我爲什麼要把爲什麼要在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