【发布时间】:2013-01-19 00:55:30
【问题描述】:
我有以下代码:
catch(Exception ex)
{
throw new FatalException("An error occurred while trying to load the XSLT file.", ex);
}
不幸的是,这只是吞噬了异常。我可以通过执行以下操作来解决此问题:
catch(Exception ex)
{
throw;
}
但我仍然希望包含自定义消息以获取有关事件记录的帮助。
如何在不丢失任何信息的情况下将此消息添加到异常中? (堆栈跟踪/调试符号等)
【问题讨论】:
-
将原始异常添加为
InnerExceptionFatalException? -
在
throw new FatalException("message", ex)的末尾。 -
@Mark 您可以这样做来添加一条可以显示给用户的用户友好消息,然后自己进行日志记录。如果您从 ApplicationException 派生 FatalException,您将能够轻松识别您添加消息的异常与代码中其他任何地方抛出的异常。
-
是的,这主要是为了有一个用户友好的消息(用于记录目的),但将原始信息保留在 Exception 中(用于调试目的)。
-
@krillgar 从
ApplicationException派生是过去推荐的做法,但现在不再适用。那是因为一些框架异常实际上也派生自该类。
标签: c# exception exception-handling