我已经创建了一个自定义的例外对于一个非常具体的问题可能出错。我收到数据从另一个系统,以及我提出的例外如果这炸弹,同时尝试分析这些数据。在我自定义的例外,我增加了一场被称为"ResponseData",这样我就可以跟踪到底是什么我的代码不能处理。

在自定义的例外情况,如这一个,应该是额外的反应的数据转入除外"消息"?如果有,该信息可能是巨大的。我想它在那里因为我使用Elmah,这就是我如何可以在这些数据。

因此,问题是:-我怎么能得到Elmah记录的额外信息从一个领域在一定义例外 或 -应该额外的异常详细信息进入"信息"的财产?

有帮助吗?

解决方案

你不填 .Message 与"调试"的信息,而是与一个简明、有用的片的文本。

http://msdn.microsoft.com/en-us/library/system.exception.message.aspx

该文本的消息应该完全描述错误,并应在可能的情况下,解释如何纠正。 值的消息性包含在返回的信息ToString.

消息财产只有在创建一个例外。如果没有信息提供给构造为当前实例,该系统提供默认的消息,被格式化使用当前系统的文化。

[..]

注意到继承者:

消息财产被复盖在班,需要控制信息内容或形式。应用程序代码的通常访问该财产时,需要显示信息有关的异常已经被抓住了。

错误信息,应进行本地化。

响应的数据不符合的说明。

不熟悉elmah,我不能告诉你如何延长 Exception 类,而使用它。不elmah执行其自己的子类 Exception?或者一个接口?你能子类,它你自己?

其他提示

在自定义的例外情况,如这一个, 应该是额外的反应的数据去 成的异常"的消息"?

没有, Sören已经指出.但是,你的异常类型可能复盖 ToString 并合理增加的响应信息的数据。这是一个完全正常的做法,通过多的例外类型的BCL(基类图书馆)所以你不会找到自己逆潮流。例如,看一看 系统。IO.FileNotFoundException.ToString 在执行情况 SSCLI(转子):

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 财产,这表示 额外 信息的情况下组件装载的失败。

我怎么能得到Elmah记录的额外 信息从一个领域中的一个自定义 异常

ELMAH 结果存储的电话 ToString 在一个例外情况的详细信息的错误所以如果你有 ToString 实施的规定,该信息会得到记录,没有进一步的工作。唯一的问题是,详细记录将 非结构化 的文本。

除外类包含一词典(名数据时,我相信),可用于协定的数据与一个香草的例外。

我完全不了解这个问题但你似乎是要求做什么用的额外数据,如果这不是你的问题随意忽视这一点。

我认为一个重要问的问题是究竟是什么异常的消息吗?这是不是知道其中的例外的来源,堆叠的跟踪;这不是封装一个例外在更一般的一个,那就应该完成与内部的领域;在该情况下您的例外是只有提出从一个特定的地方是在你的代码这甚至不是用于描述哪些类型的错误你了-那是什么类型的例外。

通常我用的消息领域提供简单的、人类可读提示,一个程序员,不是我的,看看这个错误第一次可以使用获得理解的基础系统。我认为消息的领域是适当的短(第一句)的解释,一个提示如何这种错误常常是提出或参考,以进一步阅读。

因此,作为我了解你的问题,我认为,最好的方式储存这些额外的信息',收到另一系统是作为一个InnerException.我不知道Elmah,但如果这是值得其盐它将检查InnerExceptions和储存。

我不理解这个问题--你的延伸系统。例外,你已经加入的Elmah领域。这就是它所属的地方--作为公共财产的例外本身。

Elmah是http模块,记录的未经处理的例外情况。

我想这只是一个限制Elmah,因为它不存储的定义领域。我想我得问问那些家伙。我有额外的领域中没有对应数据,但Elmah不存储。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top