SKu*_*mar 17 c# exception-handling try-catch
我的代码如下所示.
try
{
_productRepo.GetAllProductCategories();
}
catch (Exception ex)
{
//Do Something
}
Run Code Online (Sandbox Code Playgroud)
我需要一种方法来显示方法名称,假设在上面的例子中,如果在GetAllProductCategories()方法中抛出任何异常,我需要获取此方法名称,即"GetAllProductCategories()"作为我的结果.谁能建议我怎么做?
Ani*_*Ani 21
有一个TargetSite属性System.Exception应该派上用场.
获取抛出当前异常的方法.
在你的情况下,你可能想要这样的东西:
catch (Exception ex)
{
MethodBase site = ex.TargetSite;
string methodName = site == null ? null : site.Name;
...
}
Run Code Online (Sandbox Code Playgroud)
值得指出列出的一些问题:
如果抛出此异常的方法不可用且堆栈跟踪不是空引用(在Visual Basic中为Nothing),则TargetSite从堆栈跟踪中获取方法.如果堆栈跟踪是空引用,则TargetSite也返回空引用.
注意:如果异常处理程序跨应用程序域边界处理异常,则TargetSite属性可能无法准确报告引发异常的方法的名称.
您可以StackTrace像@leppie建议的那样使用该属性,但请注意这是堆栈上帧的字符串表示形式; 所以如果你只想要抛出execption的方法的名称,你将不得不操纵.
| 归档时间: |
|
| 查看次数: |
30683 次 |
| 最近记录: |