在Silverlight中重新抛出异常时保留堆栈跟踪

Ste*_*iel 5 .net c# silverlight exception

我需要重新抛出一个被捕获并存储在其他地方的异常,而不会丢失有关何时首次捕获/存储异常的堆栈跟踪信息.我的代码看起来像这样:

    public void Test()
    {
        int someParameter = 12;
        ExecuteSomeAsyncMethod(someParameter, CallbackMethod);   
    }

    public void CallbackMethod(object result, Exception error)
    {
        //Check for exceptions that were previously caught and passed to us
        if(error != null)
            //Throwing like this will lose the stack trace already in Exception
            //We'd like to be able to rethrow it without overwriting the stack trace
            throw error;

        //Success case: Process 'result'...etc...
    }
Run Code Online (Sandbox Code Playgroud)

我已经看到了这个使用反射的问题的解决方案(例如这里这里)或使用序列化(例如这里)但是这些都不适用于我在Silverlight中(不允许私有反射,并且使用的是类/方法) Silverlight中不存在序列化方法).

有没有办法保留在Silverlight中工作的堆栈跟踪?

Guf*_*ffa 3

抛出一个新的异常,并将该异常作为内部异常:

throw new ApplcationException("Error message", error);
Run Code Online (Sandbox Code Playgroud)

内部异常将保留其堆栈跟踪。