2012-01-09 47 views
0

如何在一個地方獲取java應用程序中的所有異常(有幾個類和包)? 示例:創建一個類可以得到其他應用程序類獲取Java應用程序中的所有異常

+0

沒有得到你。你想通過classpath掃描什麼是可用的異常? – 2012-01-09 06:48:32

+0

請提供更多詳情。你想捕獲所有異常還是隻看看有哪些異常類可用(只有你的包或包含java庫)?你在談論運行時和/或檢查異常。 – AxelTheGerman 2012-01-09 06:53:29

+0

異常並不是唯一引發的事情。你可以拋出錯誤甚至Throwable或子類(這既不是錯誤也不是例外) – 2012-01-09 08:06:53

回答

0

在主類中的所有異常,你可能有這樣的事情:

try { } catch (Exception ex) { } 

在你的其他類,你應該例外,像:

public void example() throws Exception { } 

如果你把其他類異常,就可以對付他們只是在主類

+1

你是否理解了這個問題?用戶986566想要什麼? – 2012-01-09 06:55:13

+1

我想user986566只想在一個類中處理所有的應用程序異常。 – 2012-01-09 06:58:24

0

及其子類是Throwable的一種形式,表示合理應用程序可能想要捕獲的條件。

如果你所有的方法都拋出主調用方法的異常,那麼你可以捕獲所有異常。

異常類的層次結構從Throwable類開始,它是整個異常類族的基類,在java.lang package中聲明爲java.lang.Throwable

1

你爲什麼不只是有一類ExceptionHandler有2個功能

void handleException(Exception e); 
void handleThrowable(Throwable t); 

,並在每個try{}catch(Exception e){}只需使用ExceptionHandler.handleException(e);

要找出異常被拋出什麼,用instanceof

例如。

if(e instanceof NullPointerException) 
{ 
//whatver 
} 
3

至於其他已經指出的,一種選擇是把你的主要方法在try-catch

public static void main(String[] args){ 
    try{ 
    //regular main code 
    } catch (Throwable e){ 
    //do exception handling 
    } 
} 

另一種可能性是設置默認的UncaughtExceptionHandler上Thread()你使用的是帶有Thread#setDefaultUncaughtExceptionHandler方法。

注意,這兩個解決方案,只允許你「處理在一個地方的所有異常」,如果他們沒有得到其他地方在您的應用程序捕獲

0

您可以使用:

嘗試{

// block of code ... 

}趕上(例外五){

// Do something with e 

}

相關問題