簡體   English   中英

特定類型異常捕獲比一般類型異常捕獲快嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM