c++能消除异常对象类型的歧义吗?
Can C++ disambiguate the type of an exception object?
使用空异常对象,如
class E1
{
};
class E2
{
};
c++(编译器或生成的可执行文件)能否在catch语句中安全地消除这些异常对象之间的歧义?如果是这样,是否意味着应该在内部存储和跟踪每个异常对象的类型代码?
是的,c++运行时将根据抛出的异常类型选择适当的catch块。你可以使用多个catch块来处理不同类型的异常
try
{
throw E2();
}
catch (E1)
{
std::cout << "Caught E1";
}
catch (E2)
{
std::cout << "Caught E2";
}
// Output: "Caught E2"
简短的回答是肯定的。E1和E2是不同的类别。
相关文章:
- ArduinoJson 6.15.2:JsonObject没有命名类型
- 防止主数据类型C++的隐式转换
- 大量序列中核苷酸类型的快速计数
- 如何从C++中的依赖类型中获得它所依赖的类型
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 是否可以初始化不可复制类型的成员变量(或基类)
- 如何获取std::result_of函数的返回类型
- 从父命名空间重载类型
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 访问者访问变体并返回不同类型时出错
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 如何正确消除继承类型定义的歧义?以及如何简化他们的创作?
- 无作用域枚举、枚举器和基础类型C++中的歧义
- C++方法调用和类型范围解析的歧义
- 可变类型的部分模板专门化和扩展到外部类型的可变参数包会导致歧义
- 按类型和歧义提取元组的元素
- 歧义情况下的类型名解析
- c++能消除异常对象类型的歧义吗?