我正在阅读this article处理损坏的状态异常,我遇到了令我困惑的事情。
什么是错误条款?
参见以下文章的引用:
错误情况只能从中传递 包含意外的函数 条件到该函数的调用者。 例外有权通过 函数执行结果 当前函数的范围 堆栈中的每一帧直到它 到达知道如何的框架 处理意外情况。该 CLR的异常系统(称为 双程异常系统)提供 每个前任的例外 线程的调用堆栈,从头开始 与来电者一同前往 一些功能说它会处理 例外(这被称为第一个 通过)。
然后异常系统将展开 呼叫中每个帧的状态 异常所在的堆栈 提出并将在哪里处理 (称为第二遍)。作为 堆栈展开,CLR将同时运行 最后的条款和错误条款 每个框架都解开了。然后, 处理框架中的catch子句是 执行。
答案 0 :(得分:6)
根据this article:
C#语言中没有的SEH子句的另一个例子是fault子句。它类似于finally子句,除了它只在被保护块中抛出异常时才被调用。
故障异常处理程序与finally块类似,只是在它作为异常的结果而保留了相关的try块时才调用它。在为错误处理程序提供执行机会之后,异常会在搜索中继续进行,或者是一个愿意捕获它的处理程序。
答案 1 :(得分:2)
fault
子句是CLI的一部分,但在C#中不可用。它与finally
子句非常相似,只是在try
块中抛出异常时才会调用它(而无论是否抛出异常,都会执行finally
块)