ZHCADC3B February 2019 – October 2023
catch 描述符控制何时捕获哪些异常。一个函数可能包含几个 catch 子句,每个子句都应用于可能抛出的函数调用的不同子集。一个调用点可以含有多个 catch 描述符,每个描述符具有不同的类型。
如果 catch 描述符中的类型与抛出的类型匹配,则控制权被转移给 landing pad(表示 catch 块的代码片段)。catch 块在用户代码中实现 catch 子句。这些块仅在实际引发异常时执行。当生成函数的其余部分时,会为函数生成这些块,并在与函数相同的栈帧中执行,但可能会放在不同的段中。
如果位 R 为 1,则 catch 子句的类型是由 TYPE 表示的引用类型。如果位 R 为 0,则类型不是引用类型。
类型字段是对 type_info 对象的引用或两个特殊值之一: