2014-11-21 53 views

回答

1

如果你可以圍繞引發「不支持的版本」異常的代碼包裝try/catch,那麼捕獲Throwable就可以做到這一點。 (這將是更好的捕捉更具體的異常UnsupportedClassVersionError雖然...)

但也有一些重要的注意事項:

  • 當你啓動JVM的異常往往拋出,而拋出的異常JVM啓動期間無法捕獲。 (他們通常任何應用程序的代碼之前運行發生;你main方法之前即任何靜態初始化之前)

    ,或者換一種說法,你通常不能把try/catch語句周圍的代碼拋出這個異常。

  • 另一種情況是當您嘗試動態加載某個類時(例如Class.forName)...不是啓動應用程序時。在您的原始(現已刪除)代碼中,launch方法可能會加載一個類,並調用靜態或實例方法來「啓動」應用程序。

  • 爲診斷以外的任何目的捕捉異常是壞主意。例外情況例外,這些例外通常說不可恢復。

+0

是不是?他問的是,發射(args)會拋出主要的小版本異常。實際上,如果是這樣,那麼主要方法本身不會觸發正確? – 2014-11-21 06:33:28

+0

@JayaAnanthram - 他的'launch'方法可能使用'Class.forName()'或類似的方法來加載一個類,而*則拋出異常*。無論如何,我的第一個項目符號已經解釋說,如果在JVM啓動期間發生異常,則該異常將不可捕捉。 – 2014-11-21 06:36:38

+0

Plus1你是對的..在這個問題沒有被正確提及。我迷茫了.. – 2014-11-21 06:39:16