1

使用程序集 CrittercismWP8SDK.dll,v2.0.0.0

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

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

StackTrace = " 在 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 的任何想法?

4

2 回答 2

1

如果您不抛出异常,只需新建它,堆栈跟踪为空

于 2014-06-26T14:12:53.160 回答
1

以这种方式创建异常

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

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

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

于 2014-06-26T14:14:37.587 回答