我有一个项目,在我的错误报告中,我想通过电子邮件发送完整的错误报告。我正在捕获异常并将所有信息传递给另一个负责发送电子邮件以提供支持的方法。
我正在向 Exception.Data 对象添加重要的自定义值。但是,我无法弄清楚我需要在我的方法中使用什么类型来传递整个数据对象。
这是我的代码:
catch (Exception exc)
{
exc.Data.Add("ID", id);
emailConnector.sendErrorEmail(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name.ToString() + "." + System.Reflection.MethodBase.GetCurrentMethod().Name.ToString(), exc.Message, exc.Data, exc.StackTrace);
}
我将 exc.Data 传递给 sendErrorEmail 方法,所以在参数声明中我有:
public void sendErrorEmail(string origin, string error_message, IDictionary<object, object> data, string stack)
但我似乎无法为 Exception.Data 获取正确的类型声明。我更喜欢保持变量和结构相同(没有新变量),因为我目前有许多方法在 Catch block 中调用 sendErrorEmail。
我应该使用什么类型,或者是否有更简单的方法让这个 Exception.Data 与我包含在其中的额外相关信息一起正确传递?
谢谢
最佳答案
查看 help page看来你的问题是 exc.Data
的类型是IDictionary
而您将其声明为 IDictionary<object, object>
.
您应该收到一条错误消息,告诉您在...之间转换时遇到问题的类型
此外,除非此方法用于异常以外的其他事情,否则我会按照注释中的建议传递整个异常并在之后剖析它,而不是传递多个属性。
关于c# - 如何传递 Exception.Data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9636891/