【发布时间】:2010-03-25 12:13:59
【问题描述】:
我刚开始玩 ELMAH。
想知道,有没有办法在抛出异常时传递信息,例如变量值或其他文本?
目前我正在使用这个: ErrorSignal.FromCurrentContext().Raise(e);
【问题讨论】:
我刚开始玩 ELMAH。
想知道,有没有办法在抛出异常时传递信息,例如变量值或其他文本?
目前我正在使用这个: ErrorSignal.FromCurrentContext().Raise(e);
【问题讨论】:
您可以在自定义消息中包含异常对象,如下所示:
ErrorSignal.FromCurrentContext().Raise(new Elmah.ApplicationException(Message,ex));
如http://blog.omniaconnect.net/2009/07/30/using-a-static-class-for-logging-exceptions-using-elmah/所见
【讨论】:
变量依赖于异常的上下文?或者它是全局的(会话值?) 如果它取决于上下文,您可以尝试使用自定义消息手动捕获异常并将异常重定向到 Elmah。
编辑:sn-p ... .Raise(new Exception("Your custom message with variable value"));
【讨论】:
这样做的一种方法是稍微扩展 elmah 以便它复制会话。基本实现在here 中进行了概述。这个功能似乎没有在 1.2(仍然是测试版)中实现,但我可能错了。
【讨论】:
我抛出一个包含数据的新异常,使用 innerexception 参数来包含原始异常。
【讨论】:
您基本上被困在将字符串传递给 elmah 确实很糟糕,但这就是当您真正了解异常时所基于的异常(至少大多数程序员如何处理它们)。
我所做的只是创建伪造对象的自定义消息,有点像:
在客户端安装等的 Class.MethodName 中发生错误,然后注入现有的异常。
【讨论】: