【发布时间】:2021-05-21 06:21:41
【问题描述】:
我会举例说明:
try
{
func1();
func2();
func3();
}
catch (Exception ex)
{
Console.WriteLine($"func{i} thrown an exception");
}
我希望能够让 'i' 保存引发异常的函数号(如果 func2() 导致异常,它应该是 2)。 实现这一目标的最简单方法是什么?
【问题讨论】:
-
也许你应该看看
ex.StackTrace的内容。或者在try之前声明一个变量并设置i = 1; func1(); i = 2; func2(); i = 3; func3(); -
或为每个函数使用单独的 try 块
-
异常的位置,最具体的行号、文件和方法都位于消息的StackStrace中,要访问它使用
ex.StrackTrace -
@FranzGleichmann 我只会在第一个或第二个抛出异常的情况下仍然想尝试执行每个函数时才这样做
-
ex变量本身引用了Exception对象,该对象有一个StackTrace属性,可以准确地告诉您抛出异常的位置。这是一个string值。如果您需要更细粒度的表示,您可以从ex值创建一个新的StackTrace对象并检查它。查看副本。