2009-08-28 33 views

回答

10

你可以在每一個方法調用中放一個try-catch塊。

或者你看看異常堆棧跟蹤。他們描述了哪一行代碼拋出了異常。

getStackTrace()[0].getMethodName() 

編輯:

Throwable

StackTraceElement

+0

由於它是非常有幫助的 – dirtybit 2009-08-28 13:39:37

2

這樣的:

try { 
    function1(); 
} catch (Exception e){ 
    // function1 error 
} 

try { 
    function2(); 
} catch (Exception e){ 
    // function2 error 
} 

try { 
    function3(); 
} catch (Exception e){ 
    // function3 error 
} 
1

所以我猜一下你的代碼,使明顯的解決方案棘手,也許是方法調用的地方是一個或兩個級別下,或不在同一水平?究竟是什麼原因妨礙你保持櫃檯?在任何情況下,您都需要對調用進行計數,使用多個try塊,或者這樣做,並定義您自己的包含缺失信息(和舊異常,因爲它是子類)的異常,然後重新拋出它。

也許你可以使用異常拋出方法繼承對象,以包裝方法調用並實現計數器?

+0

基於混淆的一個是定義一個新的異常好主意謝謝 – dirtybit 2009-08-28 13:46:06

0

我認爲自省堆棧跟蹤來做錯誤處理會在以後非常糟糕的。如果您需要對單獨的行進行單獨的操作,請將它們放在單獨的try-catch塊中。

你也可能只是想要一個簡單的變量保持狀態,所以你可以檢查值,以確定你有多遠。我認爲這會更好。

int state = 0; 
try { 
    step1(); 
    state = 1; 
    step2(); 
    state = 2; 
.... 
} catch (Exception e) { 
    if (state == 2) .... 

}


編輯:Downvoters,請注意我開始說這是一個壞主意;-)

相關問題