在C#异常处理程序中,我能否找到导致异常的方法所传递的参数?

5
我正在为一个相当复杂的分层系统编写错误处理模块。有时,我们的数据层会抛出晦涩的异常。
记录抛出异常方法的参数值将非常方便。我可以反射异常的TargetSite属性来查找方法的参数类型和名称,但似乎无法获取值……是否有遗漏?
重复问题 在 .net 异常中如何获得带有参数值的堆栈跟踪
2个回答

3

内置的 ArgumentOutOfRangeException 框架(如果传入参数超出范围,应在方法中抛出)具有引起错误的方法参数的私有字段和公共属性...创建此异常时,需要在 ctor 中传递参数值...

throw new ArgumentOutOfRangeException(string parameterName, 
           object actualValue, string message);

对于其他异常,如果您在抛出异常的方法中捕获该异常,并将其封装在您自己的自定义异常中,则可以为那些方法参数添加额外的字段和属性。


2
简而言之,不行。请看这篇关于使用反射捕获方法状态的问题:capturing method state,其中有一些原因。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接