将异常传递给Crittercism LogHandledException导致NullReferenceException

时间:2014-06-26 14:03:45

标签: c# windows-phone-8 crittercism

使用Assembly CrittercismWP8SDK.dll,v2.0.0.0

在下面的旧代码中,Crittercism抛出NullReferenceException:at

[System.NullReferenceException] = {System.NullReferenceException:对象引用未设置为对象的实例。    at CrittercismSDK.DataContracts.ExceptionObject..ctor(String exceptionName,String exceptionReason,String stacktrace)    在CrittercismSDK.Crittercism.LogHandledExce ...

StackTrace =“at CrittercismSDK.DataContracts.ExceptionObject..ctor(String exceptionName,String exceptionReason,String stacktrace)\ r \ n

   at CrittercismSDK.Crittercism.LogHandledException(Exception e)\ 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?

2 个答案:

答案 0 :(得分:1)

如果你没有抛出异常,只需要新建它,堆栈跟踪为空

答案 1 :(得分:1)

以这种方式创建例外

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

并将其直接传递给Crittercism会导致StackTrace - 异常的属性设置为null。在这种情况下,我认为这就是Crittercism的问题。

在catch块中,StackTrace - 属性初始化,以便Crittercism在这种情况下不会抛出NullReferenceException。