使用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?
答案 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。