【发布时间】:2018-06-29 16:02:50
【问题描述】:
当 Visual Studio 报告堆栈跟踪时,我有时会收到“字符串值不是有效的 DateTime”之类的信息。这个问题与该错误无关,但是当我查看异常时,我永远找不到实际值。例如,是“3”还是“Hello”?我通常会在程序中回溯以获取它。我的问题是,当我们谈论 .NET 调用时,异常对象是否真的在某处包含导致异常的值?
【问题讨论】:
-
有时。取决于例外情况。
-
不,它不会,除非抛出异常的人将这些值添加到异常属性中。
-
关于将“坏”值放入异常的有趣故事。在 .NET v1 发布之前,可能会出现异常消息“您无权获取文件 c:/foo/bar.txt 的名称”。超级,感谢您让我知道我不允许知道的文件名。显然,这得到了解决。将有问题的值放在异常中通常是个坏主意,因为异常可能会沿调用堆栈向上传播到低信任代码中。与网站不向试图破坏网站的黑客显示错误日志的原因相同!
标签: c# visual-studio exception-handling