回答
一個錯誤「表示嚴重問題 合理的應用程序應該 不要試圖趕上。」
而
了異常 「表示條件 合理的應用程序可能 想趕上。」
Error隨RuntimeException
&其子類unchecked
例外。所有其他異常類別都是checked
例外。
檢查例外通常是程序可以從中恢復的那些&以編程方式從這些例外中恢復可能是一個好主意。例子包括FileNotFoundException
,ParseException
等程序員,預計通過使用try-catch塊來檢查這些異常或扔回去給調用者
在另一方面,我們有選中例外。這些都是那些如果一切順利都不會發生的例外,但它們確實發生了。示例包括ArrayIndexOutOfBoundException
,ClassCastException
等。許多應用程序將使用try-catch
或throws
子句爲RuntimeExceptions
&其子類,但從語言角度來看,它不需要這樣做。請注意,從RuntimeException
恢復通常是可能的,但設計類/異常的人認爲最終程序員沒有必要檢查這些異常。
錯誤也未經檢查異常&程序員不需要對這些做任何事情。實際上,對於錯誤使用try-catch
子句是一個壞主意。大多數情況下,從錯誤中恢復是不可能的。&程序應該被允許終止。例子包括OutOfMemoryError
,StackOverflowError
等
請注意,雖然錯誤是未經檢查的異常,我們不應該試圖對付他們,但它是確定以應對代碼RuntimeExceptions
(也unchecked異常)。檢查的異常應該由代碼處理。
一般而言,錯誤是指任何人都無法控制或猜測它何時發生.Exception可以被猜測並且可以被處理。 Java中的異常和錯誤是Throwable的子類,它是基於程序控制進行區分的。例如OutOfMemory Error等錯誤,程序員無法猜測並且可以處理它。它依賴於基於結構,操作系統和服務器配置的動態.Where因爲Exception程序員可以處理它,並且可以避免應用程序的錯誤行爲。例如,如果您的代碼正在查找不可用的文件,則拋出IOException。此類實例程序員可以猜測並處理它。
錯誤是大多數情況下你無法處理的東西。
例外是爲了給你一個機會去做一些事情。就像嘗試別的東西或寫入日誌。
try{
//connect to database 1
}
catch(DatabaseConnctionException err){
//connect to database 2
//write the err to log
}
Error
和Exception
都擴展Throwable
,但大多Error
由JVM中的場景是致命的,是沒有辦法的應用程序,以從錯誤中恢復拋出。例如OutOfMemoryError
。
雖然即使應用程序也可以引發Error
,但它不是一個好習慣,相反,應用程序應該使用檢查的異常來處理可恢復的條件,並使用運行時異常來處理編程錯誤。
我可能有一個例子,你可能想嘗試從'Error'(例如'OutOfMemoryError')恢復。假設你有一個移動應用程序,並且你想放置一張背景圖片。在某些舊的或較低的內存設備上,這可能是不可能的(應用程序本身沒有留下內存)。所以有兩個選項你會檢查它是否可能每次你想顯示這樣的圖片,或者你只是試圖顯示它,如果它會失敗,你趕上'OutOfMemoryError'並繼續沒有它。 – 2015-12-11 07:08:42
- 1. Javascript中的錯誤和異常有什麼區別
- 2. web.xml錯誤500和struts全局異常有什麼區別?
- 3. 異常和錯誤之間的區別
- 4. 異常和錯誤之間的區別?
- 5. 本機php異常和該文本返回的錯誤有什麼區別?
- 6. 語法錯誤和語義錯誤與邏輯錯誤有什麼區別?
- 7. 繼承與類別有什麼區別
- 8. 運行時錯誤和編譯器錯誤有什麼區別?
- 9. 返回代碼錯誤和錯誤有什麼區別
- 10. C#中的Specific和Exception異常有什麼區別?
- 11. 陷印和處理異常有什麼區別?
- 12. 投擲和投擲之間有什麼區別異常
- 13. 中斷和異常上下文有什麼區別?
- 14. 拋出和拋出arg捕獲異常有什麼區別?
- 15. TouchEvent常量有什麼區別?
- 16. 有什麼區別
- 17. 有什麼區別
- 18. 有什麼區別?
- 19. 有什麼區別?
- 20. 有什麼區別?
- 21. 有什麼區別
- 22. ....有什麼區別?
- 23. 有什麼區別?
- 24. 有什麼區別
- 25. 有什麼區別
- 26. 有什麼區別
- 27. 有什麼區別?
- 28. 集成測試與rspec的正常測試有什麼區別?
- 29. 有什麼區別`和$(Bash中有什麼區別?
- 30. 與%i和%li有什麼區別?
'RuntimeException'S通常是由不良編程引起的。 – wulfgarpro 2012-09-09 08:46:47
恰恰相反,wulfgar,我的經驗告訴我,RuntimeException是用戶輸入無效的結果。 – corsiKa 2015-04-19 04:45:35
@corsiKa無效的用戶輸入應該由程序員檢查。 – mochomecha 2016-05-25 08:19:37