Mar*_*tos 5 c++ xcode exception-handling llvm
在gcc 4.2中,这有效:
#include <stdexcept>
#include <iostream>
int main() {
try {
throw std::runtime_error("abc");
} catch (const std::exception& ex) {
std::cout << ex.what();
}
}
Run Code Online (Sandbox Code Playgroud)
在Xcode 4.3.2(带有LLVM 3.1的iOS,-std = c ++ 11)中,这失败了terminate called throwing an exception,从未到达该NSLog(…)行:
#include <stdexcept>
int main() {
try {
throw std::runtime_error("abc");
} catch (const std::exception& ex) {
NSLog(@"%s", ex.what());
}
return UIApplicationMain(argc, argv, nil, nil);
}
Run Code Online (Sandbox Code Playgroud)
但这有效:
#include <stdexcept>
int main() {
try {
throw std::runtime_error("abc");
} catch (const std::runtime_error& ex) {
NSLog(@"%s", ex.what());
}
return UIApplicationMain(argc, argv, nil, nil);
}
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?
海湾合作委员会是正确的:
15.3p3处理程序
E与类型为if的异常对象匹配
- ... 或者
- 处理程序的类型为cv
T或cvT&并且是, 或T的明确公共基类E- ...
这听起来像是一个 xcode bug(而且是一个令人惊讶的基本错误!)
| 归档时间: |
|
| 查看次数: |
414 次 |
| 最近记录: |