[英]How to catch exception in Java?
我在代碼中遇到異常,我想捕獲內部異常。 有可能抓住嗎?
java.lang.RuntimeException: error
some stack trace
some stack trace
some stack trace
! Caused by: java.util.concurrent.TimeoutException: null
some stack trace
some stack trace
some stack trace
可以說我有以下代碼。
function abc() {
try{
xyz()
} catch (TimeoutException e) {
do stuff
}
}
xyz()函數正在生成該異常。 會像這樣工作捕獲TimeoutException嗎?
您不能直接這樣做。 您必須捕獲外部異常,檢查其getCause()
以查看是否是所需異常,然后處理導致該異常的原因或重新引發頂級異常。
(從技術上講,您也可以只拋出內部的,但是我強烈不建議這樣做;堆棧跟蹤將非常混亂,並且將更加難以調試-尤其是從現在開始的一年,當您忘記了你做到了)
不,您不能使用catch(TimeoutException e)
捕獲RuntimeException
。
但是,你可以做
} catch (RuntimeException e) {
Throwable cause = e.getCause();
}
得到原因。
您不能直接捕獲由TimeoutException
引起的RuntimeException
。
但是您可以這樣實現:
try {
xyz();
} catch (RuntimeException e) {
if (e.getCause() instanceof TimeoutException) {
// handle TimeoutException
doStuff();
} else {
// rethrow all exceptions with other causes
throw e;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.