![](/img/trans.png)
[英]Is there any performance difference between catching Exception or certain type exception ? - Java
[英]Is particular type exception catching faster than general type exception catching?If faster which ratio?
我想知道像NullPointerException
ex這樣的特殊異常要比Exception
ex更快。
例如我的代碼拋出NullPointerException
try {
...
} catch (NullPointerException e) {
...
}
要么
try {
...
} catch (Exception e) {
...
}
哪一個更快? 我認為異常系統取決於標志,因此特定類型更快,因為控制較少。 但是我不知道。
如果答案是肯定的,為什么? 謝謝。
不:您認為代碼沒有崩潰。
通常需要注意的事項...請確保不要過早優化 。 進行編程,而不是提高速度。 如果程序太慢,請使用探查器查找問題。
假設Java並且沒有拋出異常,它們的速度同樣快。 永遠不會調用athrow操作,因此不會在異常表上執行查找,也不需要進行異常類匹配。
如果您在帶有單個特定異常處理程序的try語句中拋出一個異常,該異常處理程序將與該異常匹配,則異常表查找將比一般異常類稍快地匹配特定異常類,因為它不會使類層次結構爬升到找到匹配的祖先類。 略微地說,我的意思是您應該保存少於10條CPU指令,並且拋出異常應該非常少見。
如果您拋出各種異常並具有多個catch塊,那么情況就太復雜了,以至於說捕獲單個常見的祖先類異常會更快或更慢。 這取決於細節。
Kaffe的exception.c中的函數findExceptionBlockInMethod顯示了異常匹配代碼的一種實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.