這兩者有什麼區別?投擲和投擲之間有什麼區別異常
回答
例外的是在程序中的邏輯錯誤。 JVM使用錯誤來指示環境出現問題,如OutOfMemoryError或IncompatibleClassChangeError。 ThreadDeath用於殺死線程。 Throwable在所有這些方面都是超級類。
在正常的程序邏輯中,你永遠不應該拋出或捕獲Throwables或Errors。我能想到捕捉錯誤的主要原因是這樣的:您正在使用自己的類加載系統,並希望隔離損壞的插件。
例如用於的ThreadDeath的JavaDoc的說:
應用程序應抓住這一類的實例只有當它必須被異步終止後清理。如果ThreadDeath被一個方法捕獲,重新拋出它是非常重要的,以便線程真正死亡。
的的Throwable類是Java語言中所有錯誤和異常的超類。只有作爲此類(或其某個子類)的實例的對象由Java虛擬機拋出,或者可以由Java throw語句拋出。同樣,只有這個類或它的一個子類可以是catch子句中的參數類型。
兩個子類的錯誤和異常的實例通常用於指示發生異常情況。通常情況下,這些實例是在異常情況下新創建的,以包含相關信息(如堆棧跟蹤數據)。
的Exception類及其子類是Throwable的一種形式,它指出的條件合理的應用程序想要捕獲的。
請閱讀文檔,它解釋。
這是層次結構
java.lang.Object
java.lang.Throwable
java.lang.Exception
Throwable可能是錯誤或異常。
從Java文檔:
的Error
是Throwable的子類,表示嚴重的問題,一個合理的應用程序不應該試圖捕獲。大多數此類錯誤都是異常情況。
Exception
及其子類是Throwable的一種形式,表示合理應用可能需要捕獲的條件。
Throwable類是由Exception類和Error類擴展的,所以通過使用throws Throwable你實際上是說你的方法不僅可以拋出異常,還可以拋出一個錯誤。根據文檔兩者之間的區別是,例外的是
條件合理的應用程序想要捕獲的
而錯誤表示
嚴重的問題,一個合理的應用程序應該不要試圖捕捉
請參閱here瞭解更多d etails。
如果Throwable
只能是一個Error
或Exception
,將有一個方法throws Throwable
和throws Exception
之間沒有區別,因爲Error
可以隨時拋出,即使未聲明(如RuntimeException
,太)。
但隨着throws Throwable
聲明的方法還可以使用throw new Throwable("example");
,或者是這樣的:
class CannonBall extends Throwable {}
throw new CannonBall();
通常沒有理由做這樣的事情,所以在實踐中throws Throwable
和throws Exception
是等同。
- 1. 投擲Java異常
- 2. 投擲狀態異常
- 3. 投擲異常問題
- 4. 按任務投擲異常
- 5. py2Neo投擲py2neo.rest.NoResponse異常
- 6. 列表投擲UnsupportedOperationException異常
- 7. Netbeans的投擲NumberFormatException異常
- 8. PhpMailer投擲致命異常
- 9. 投擲和捕捉異常#2
- 10. 爲什麼是摻合和Visual Studio 12投擲和異常?
- 11. 投擲回報與馬克西姆破發之間的區別
- 12. 來自ANTLR4訪客的投擲異常
- 13. C++跨線程異常投擲
- 14. setVideoSource投擲的RuntimeException(狀態:IllegalStateException異常)
- 15. adView投擲空指針異常
- 16. VSTO Excel加載項投擲異常
- 17. 撒克遜投擲java.net.SocketException異常:
- 18. 投擲泛型異常不鼓勵?
- 19. 在android中投擲異常問題
- 20. Div標記投擲空引用異常
- 21. 投擲HTTP異常從的Application_Error
- 22. WCF單例投擲超時異常
- 23. ParcelFileDescriptor投擲文件未發現異常
- 24. 異常投擲最佳實踐
- 25. 休眠方法投擲「java.lang.IllegalArgumentException異常」
- 26. Debug.Assert與特定投擲異常
- 27. 從Mockito模擬投擲異常
- 28. Jetty.util.MultiMap投擲ConcurrentModificationException
- 29. laravel投擲MethodNotAllowedHttpException
- 30. 投擲後AOP