2013-05-19 81 views
0

我在Android圖書館工作,我需要一個異常對象傳遞給一個函數。該函數應該處理所有異常類型,並能夠返回異常中的所有可用數據,例如錯誤消息,堆棧跟蹤和內部異常。發送異常變量的函數,返回異常的詳細信息

下面是我如何傳遞異常變量,以我的函數catch語句內。

try 
{ 
    txtText = (EditText)findViewById(R.id.txtTestEdit); 
    String test = txtText.getText().toString(); 
} 
catch (NullPointerException ex) 
{ 
    CrashReporter.ReportCrash(ex); 
} 

以下是我需要提取異常類型的函數。

public static void ReportCrash(Object exceptionObject) 
{ 
    String exceptionType = exceptionObject.getClass().getName(); 
    Log.d("Exception Type", exceptionType);  
} 

在這個例子中,異常類型是java.lang.NullPointerException。有沒有一種方法可以將名爲exceptionObject的對象返回到原始異常以提取堆棧跟蹤內部異常和錯誤消息。

請注意,這個功能應該與所有的異常類型應付不只是一個NullPointerException

感謝您的幫助,您可以提供

+0

對不起,這一點,但要清楚,你想投exceptionObject在適當的異常子類,並處理每一個相應的對象呢? –

+0

我的exceptionObject應該返回適​​當的異常類型。所以我可以提取異常中包含的信息。這樣,用戶就可以傳遞任何異常的變量,並且庫可以處理它,而用戶不必自己傳遞每一個信息。 – Boardy

回答

0

最好的方式做你想做的是使用一個回調,使每個方法都可以正確處理它,但是,如果沒有回調,那就讓它執行一些默認行爲。

這樣你可以在有錯誤的方法使用性能。

這個問題進入更多的回調在安卓

How to Define Callbacks in Android?

但是,基本上你創建一個類似的方式實現這一個接口:

CrashReporter.ReportCrash(ex, new ExceptionCallback() { 
    public void myExceptionCallback(Exception e) { 
    } 
    }); 

此代碼韓元不會編譯,而只是爲了展示實現它的可能方式。

如果你的類有需要一個回調,那麼你就可以創建回調監聽器更早,只是把它傳遞給ReportCrash方法。