【发布时间】:2012-05-10 20:43:28
【问题描述】:
我试图在保留内部异常的同时显示自定义异常消息。
这是我的示例代码:
public class Class1
{
public Class1()
{
try
{
throw new WebException("Initial Exception");
}
catch (WebException we)
{
throw new myException("Custom Message", we);
}
}
}
public class myException : WebException
{
public myException(string msg, WebException e) : base(msg, e) { }
}
当我运行此代码时,它会在调试器中显示自定义消息:
仍然向客户端发送内部异常消息:
我在这里做错了什么?如何在显示我自己的自定义消息时保留内部异常?
【问题讨论】:
-
请注意,它仍在显示您的自定义 myException 信息。我猜这是 ASP.NET 服务器的一个“功能”,它首先将内部异常数据显示为问题的源头。我想,也许,这是为了方便服务器端调试。可能有一个服务器配置选项来控制它,但我不知道。
-
“您不应定义派生自 ApplicationException 的新异常类;应改用 Exception。此外,您不应编写捕获 ApplicationException 的代码。” - 微软
-
另外,我认为您可能希望
throw;而不是throw e;作为最终的Exceptioncatch处理程序 - 它会保留堆栈信息,而您所拥有的则不会。 -
@JesseC.Slicer,我只是使用此代码作为示例,
throw;没有任何运气,因为我仍然想保留初始异常
标签: c# asp.net exception exception-handling