捕获类型调度时间

时间:2015-03-16 14:45:15

标签: c++ exception exception-handling try-catch

有一个问题正在与同事讨论 - catch的类型调度是编译时间还是隧道时间? 换句话说 - 当抛出该特定类型的异常时,系统何时决定应该调用特定的catch。 我认为它应该是运行时间,但我不确定。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

文档Technical report on C++ performance描述了编译器用于处理异常处理的几种技术。

最新的编译器构建一个表,将异常类型映射到catch处理程序位置(在编译阶段)。当编译的程序运行并发生throw时,将执行对预先计算的表的查找以查找处理程序位置。