我的代码如下所示。
try
{
_productRepo.GetAllProductCategories();
}
catch (Exception ex)
{
//Do Something
}
我需要一种方法来显示方法名称,假设在上述情况下,如果 GetAllProductCategories() 方法中抛出任何异常,我需要获取此方法名称,即“GetAllProductCategories()”作为我的结果。任何人都可以建议我如何做到这一点吗?
有一个TargetSite http://msdn.microsoft.com/en-us/library/system.exception.targetsite(VS.90).aspx属性于System.Exception
这应该会派上用场。
获取抛出异常的方法
当前异常。
就您而言,您可能想要类似的东西:
catch (Exception ex)
{
MethodBase site = ex.TargetSite;
string methodName = site == null ? null : site.Name;
...
}
值得指出列出的一些问题:
如果抛出这个的方法
异常不可用,并且
堆栈跟踪不是空引用
(Visual Basic 中没有任何内容)、TargetSite
从栈中获取方法
痕迹。如果堆栈跟踪为空
参考,TargetSite 还返回一个
空引用。
注意:TargetSite 属性可能不会
准确地报告姓名
方法中出现异常
如果异常处理程序抛出
处理异常
应用程序域边界。
你可以使用StackTrace
@leppie 也建议使用属性,但请注意,这是堆栈上帧的字符串表示形式;所以如果你只想name抛出异常的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)