抛出逻辑

DxC*_*xCK 4 .net c# exception-handling try-catch-finally try-finally

try
{
    try
    {
        throw new Exception("From Try");
    }
    catch
    {
        throw new Exception("From Catch");
    }
    finally
    {
        throw new Exception("From Finally");
    }
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}
Run Code Online (Sandbox Code Playgroud)

上面代码的输出是:From Finally.

为什么不From Catch呢?

-要么-

我怎样才能从外部捕获和记录两个例外?

Hen*_*man 6

因为finally块 catch块之后执行,所以覆盖异常.

当处理前一个异常时发生异常,第一个异常丢失.

我怎样才能从外部捕获和记录两个例外?

  1. 通过扔进最后的块.这总是一个坏主意.
  2. 如果要登录内部catch块使用throw;或将第一个异常作为新异常的InnerException传递.这就是InnerException 存在的原因.