这段代码:
#include <iostream>
#include <stdexcept>
using namespace std;
int throw_it() {
throw range_error( "foo" );
}
int main() {
try {
throw throw_it();
}
catch ( exception const &e ) {
cerr << e.what() << endl;
return 0;
}
}
运行时打印foo
,但可以保证这样做吗?更具体地说,在抛出异常的过程中抛出异常会导致定义的行为吗?这种行为是否会引发最近抛出的异常(就像上面的测试代码一样)?
供参考:
$ g++ --version
i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)