在C#中构建异常

use*_*042 4 c#

我继承了一个使用编译日志库的代码库.我无法更新日志库.此库具有记录异常详细信息的方法.该方法将单个Exception作为参数.我现在正在构建一个与此系统相关的移动应用程序.

在这个移动应用程序中,我有一个代码块来处理未捕获的异常.我需要在服务器中记录这些.但现在,我只能以字符串格式通过网络传递详细信息.因此,我有一个服务接受错误消息,堆栈跟踪和杂项作为字符串.我需要获取这些字符串并将它们转换为Exception,以便我可以将它们传递给我之前存在的库.

如何将消息和stackTrace作为字符串并将它们捆绑到异常中?这里的挑战是Message和StackTrace是只读的.

谢谢!

jas*_*son 7

StackTrace是虚拟的,所以你可以Exception像这样定义自己的:

public class MyException : Exception {
    private readonly string stackTrace;
    public override string StackTrace { get { return this.stackTrace; } }
    public MyException(string message, string stackTrace) : base(message) {
        this.stackTrace = stackTrace;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后将实例传递MyException给您的日志代码.这样,您的价值完全控制MessageStackTrace.