如何获取引发异常的方法名

2024-02-22

我的代码如下所示。

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(使用前将#替换为@)

如何获取引发异常的方法名 的相关文章

随机推荐