有一个问题正在与同事讨论 - catch
的类型调度是编译时间还是隧道时间?
换句话说 - 当抛出该特定类型的异常时,系统何时决定应该调用特定的catch
。
我认为它应该是运行时间,但我不确定。
任何帮助将不胜感激!
答案 0 :(得分:0)
文档Technical report on C++ performance描述了编译器用于处理异常处理的几种技术。
最新的编译器构建一个表,将异常类型映射到catch处理程序位置(在编译阶段)。当编译的程序运行并发生throw
时,将执行对预先计算的表的查找以查找处理程序位置。