【发布时间】:2015-12-10 16:48:44
【问题描述】:
众所周知,C++ 没有反射。但是,当我们抛出错误时,try-catch 可以确定您抛出的是哪种类型的异常。没有反射如何工作?
【问题讨论】:
-
您将编译器内部与外部提供给程序员的内容进行比较。这是两个不同的东西。
众所周知,C++ 没有反射。但是,当我们抛出错误时,try-catch 可以确定您抛出的是哪种类型的异常。没有反射如何工作?
【问题讨论】:
虽然 C++ 没有向程序员公开的反射,但编译器知道类型信息。特别是,当 C++ 程序执行时,有特殊的规定,每次进入 try 块时,都会产生一个特殊的条目(某处,例如,在异常帧中),表明特定编译时类型的异常已准备好在这个位置处理。当抛出异常时,会在框架中查找最近的合适处理程序。
【讨论】: