[英]“Rethrow” to next catch clause
如果有一個帶有多個catch-blocks的try-catch,是否有辦法重新拋出下一個(不是底層)catch-clause的異常?
例:
try {
// some exception can occur here
} catch (MyException ex) {
// do something specific
// rethrow ex to next catch
} catch (Exception ex) {
// do logging stuff and other things to clean everything up
}
當拋出MyException
,我想處理該異常的特定內容,但后來我想處理異常( catch (Exception ex)
)。
我不想使用finally-block和Java 7 Multi-catch也沒有幫助。
任何想法如何處理這個,我想避免每個catch塊中的冗余東西。 是否更好地僅捕獲Exception
,然后使用instanceof
作為我的特定內容?
謝謝。
public void doStuff()
{
try
{
// some exception can occur here
} catch (MyException ex){
// do something specific
cleanupAfterException(ex);
} catch (Exception ex) {
cleanupAfterException(ex);
}
}
private void cleanupAfterException(Exception ex)
{
//Do your thing!
}
我認為這樣的事情會做什么?
您可能想嘗試這樣的事情:
try
{
}
catch(Exception ex)
{
if(ex instanceof MyException)
{
// Do your specific stuff.
}
// Handle your normal stuff.
}
你可以嵌套你的try
語句:
try {
try {
// some exception can occur here
} catch (MyException ex) {
// do something specific
// rethrow ex to next catch
}
} catch (Exception ex) {
// do logging stuff and other things to clean everything up
}
雖然我擔心這就是你說“ (不是底層) ”的意思嗎?
您可以嘗試多次嘗試捕獲:
try {
} catch(MyException ex) {
try {
} catch(Exception ex) {
}
}
當然這是什么功能?
try {
doStuff();
} catch ( MyException e ) {
doMyExceptionStuff();
doGeneralExceptionStuff();
throw e;
} catch ( Exception e ) {
doGeneralExceptionStuff();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.