【发布时间】:2013-07-15 18:02:46
【问题描述】:
我想在 C# 中创建一个自定义异常,但理论上我确实需要先进行一些解析,然后才能创建人类可读的异常消息。
问题是原始Message只能通过调用Messsage的基构造函数来设置,所以我不能提前做任何解析。
我尝试像这样覆盖 Message 属性:
public class CustomException : Exception
{
string _Message;
public CustomException(dynamic json) : base("Plep")
{
// Some parsing to create a human readable message (simplified)
_Message = json.message;
}
public override string Message
{
get { return _Message; }
}
}
问题在于 Visual Studio 调试器仍然显示我已传递给构造函数的消息,在本例中为 Plep。
throw new CustomException( new { message="Show this message" } )
结果:
如果我将基本构造函数留空,它将显示一条非常通用的消息:
App.exe 中出现“App.CustomException”类型的未处理异常
问题
看起来异常对话框读取了一些我也无权访问的字段/属性。有没有其他方法可以在异常的基础构造函数之外设置人类可读的错误消息。
请注意,我使用的是 Visual Studio 2012。
【问题讨论】:
-
您的代码对我来说工作得很好。它确实有效。
-
它可以编译,但如果你抛出错误,它将显示底层消息(“Plep”),而不是“显示此消息”。请看一下我添加的额外示例。
-
我认为没有理想的解决方案。当我将整个异常类解析为 JSON 时,我遇到了类似的问题。自定义属性在此过程中丢失。你能描述一个场景吗?也许我们可以提供一些解决方法。
-
我试图抛出异常,我有自定义消息,而不是 Pllep
-
Houssem,您使用的是什么 IDE?你在看同一个调试器对话框吗?
标签: c# visual-studio exception visual-studio-2012