gpt4 book ai didi

c# - 向自定义异常添加额外信息

转载 作者:可可西里 更新时间:2023-11-01 08:36:59 24 4
gpt4 key购买 nike

我为一个可能出错的非常具体的问题创建了一个自定义异常。我从另一个系统接收数据,如果它在尝试解析该数据时发生爆炸,我会引发异常。在我的自定义异常中,我添加了一个名为“ResponseData”的字段,因此我可以准确跟踪我的代码无法处理的内容。

在像这个这样的自定义异常中,额外的响应数据是否应该进入异常“消息”?如果它去那里,信息可能是巨大的。我有点想要它在那里,因为我正在使用 Elmah,这就是我获取该数据的方式。

所以问题是:- 如何让 Elmah 在自定义异常中记录来自字段的额外信息要么- 是否应将额外的异常详细信息放入“消息”属性?

最佳答案

In custom exceptions such as this one, should that extra response data go into the exception "message"?

不,因为Sören already pointed out .但是,您的异常类型可以覆盖 ToString 并在那里明智地添加响应数据信息。这是 BCL(基类库)中许多异常类型遵循的完全正常的做法,因此您不会发现自己逆流而上。例如,看看 System.IO.FileNotFoundException.ToStringSSCLI (Rotor) 中实现:

public override String ToString()
{
String s = GetType().FullName + ": " + Message;

if (_fileName != null && _fileName.Length != 0)
s += Environment.NewLine + String.Format(Environment.GetResourceString("IO.FileName_Name"), _fileName);

if (InnerException != null)
s = s + " ---> " + InnerException.ToString();

if (StackTrace != null)
s += Environment.NewLine + StackTrace;

try
{
if(FusionLog!=null)
{
if (s==null)
s=" ";
s+=Environment.NewLine;
s+=Environment.NewLine;
s+="Fusion log follows: ";
s+=Environment.NewLine;
s+=FusionLog;
}
}
catch(SecurityException)
{

}
return s;
}

如您所见,它附加了 FusionLog 的内容属性,表示程序集加载失败时的额外信息。

How can I get Elmah to record extra information from a field in a custom exception

ELMAH将在异常时调用 ToString 的结果存储为错误的详细信息,因此如果您按规定实现了 ToString,则无需进一步工作即可记录信息。唯一的问题是记录的详细信息将是非结构化文本。

关于c# - 向自定义异常添加额外信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com