以下程式拋出nullptr然后捕獲例外為int*:
#include <iostream>
int main() {
try {
throw nullptr;
}
catch(int*) {
std::cout << "caught int*";
}
catch(...) {
std::cout << "caught other";
}
}
在 Clang 和 GCC 中程式成功列印caught int*,演示:https : //gcc.godbolt.org/z/789639qbb
但是在 Visual Studio 16.11.2 中,程式會列印caught other. 這是MSVC中的錯誤嗎?
uj5u.com熱心網友回復:
根據標準[except.handle],看起來像是 Visual Studio 中的錯誤:
處理程式與例外物件型別匹配,
E如果[...]
- 處理程式是 type
cv Torconst T&whereTis apointerorpointer-to->membertype andEisstd?::?nullptr_t。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/350361.html
上一篇:在哪里放置自定義例外類?
