C# 尝试捕获最终嵌套的行为,但出现异常

C# 尝试捕获最终嵌套的行为,但出现异常,c#,exception-handling,C#,Exception Handling,所以我想知道嵌套的try-catch-finally块的行为 我的意思是,如果在第一个finally块中,我们有另一个try-catch-finally块,并且内部finally块中发生异常,该怎么办 是否要传播异常?它会在什么地方被抓住吗 我应该在哪里捕捉异常?在内部finally块中,或者如果它被传播,我应该从上面的代码捕获它吗 例如: static bool Func() { try {} catch {} finally {

所以我想知道嵌套的
try-catch-finally
块的行为

我的意思是,如果在第一个
finally
块中,我们有另一个
try-catch-finally
块,并且内部
finally
块中发生异常,该怎么办

是否要传播异常?它会在什么地方被抓住吗

我应该在哪里捕捉异常?在内部
finally
块中,或者如果它被传播,我应该从上面的代码捕获它吗

例如:

static bool Func()
{
    try
    {}
    catch
    {}
    finally
    {
        try
        {}
        catch
        {}
        finally
        {
           throw new ApplicationException();
        }
    }
}

视情况而定。您可以在内部异常中处理该异常,但是如果您不想处理它,您可以抛出它,以便外部Try-Catch将“接收”该异常


有关更详细的示例,请参阅:

否,我在询问内部finally块@BenReichAnd No,@Anirudh,我问的是一个嵌套的异常。内部finally块的异常将从包含finally的块中传播出来,并在更高的级别上处理。因此,内部finally块中抛出的异常将向外传播,直到它在更高的级别上找到特定的catch块,或者如果没有找到异常,它将抛出异常。您可以轻松地编写以任何你想要的方式编码并检验你的假设。这个问题是完全封闭的,在这个网站和其他地方有大量的资源来描述这个行为,你也可以通过测试来发现和确认这些行为。做更多的研究。正如我所说,对于给定的示例,该异常没有catch块,因此不会被捕获。记住,所有其他外部finally块都不会被进一步执行。如果异常发生在finally中,外部Try Cartch将如何读取异常??