2014-06-26 46 views
1

使用匯編CrittercismWP8SDK.dll,V2.0.0.0傳遞例外Crittercism LogHandledException引起的NullReferenceException

在下面舊代碼,Crittercism拋出的NullReferenceException:在

[System.NullReferenceException] = {System.NullReferenceException : 你調用的對象是空的。 在CrittercismSDK.DataContracts.ExceptionObject..ctor(字符串exceptionName,字符串exceptionReason,字符串堆棧跟蹤) 在CrittercismSDK.Crittercism.LogHandledExce ...

堆棧跟蹤=「在CrittercismSDK.DataContracts.ExceptionObject..ctor(字符串exceptionName,串exceptionReason,絃樂堆棧跟蹤)\ r \ n
在CrittercismSDK.Crittercism.LogHandledException(例外五)\ r \ n

舊代碼

Exception exception = new Exception(description); 
exception.Data.Add(MethodName, methodName); 
Crittercism.LogHandledException(exception); //NullReferenceException 

新的代碼,也不例外:

try 
{ 
    Exception ex = new Exception(description); 
    ex.Data.Add(MethodName, methodName); 
    throw ex; 
} 
catch (Exception e) 
{ 
    Crittercism.LogHandledException(e); //No NullReferenceException 
} 

我的理論是,系統以我不能或我錯過的方式填充Exception對象。舊代碼導致Crittercism拋出NullReferenceException的任何想法?

+0

不,不存在傳遞給Crittercism的空值。 – ezaspi

+0

我的不好,我將NPE更改爲NullReferenceException,這是拋出的實際Exception。 – ezaspi

回答

1

創建例外這樣

Exception exception = new Exception(description); 
exception.Data.Add(MethodName, methodName); 
Crittercism.LogHandledException(exception); 

,並直接把它傳遞給Crittercism結果,該StackTrace - 例外的屬性設置爲null。在這種情況下,我認爲這是Crittercism的問題。

在catch塊中,StackTrace -property初始化,以便Crittercism在此情況下不會拋出NullReferenceException。

+0

感謝紳士們,我爲Crittercism提交了一個bug。我們會確認這一點並提出修正。確實,發送異常的更準確的方式當然是在你包含堆棧跟蹤的時候從try/catch塊中拋出。 –

+0

幾件事:1.兩個答案都是一樣的。我可以接受還是隻接受一個?我假設第一個到達那裏的是我接受的那個?我明天將接受給予確認的時間。我絕對無法確定這是事實。但這聽起來不錯。 – ezaspi

+0

@ezaspi你只能接受一個答案,這取決於你哪個答案爲你提供了最好的信息和你提出的問題。 – Jehof

1

如果沒有拋出異常,只是新起來,堆棧跟蹤是空

相關問題