首页 > 解决方案 > 如何知道 std::exception 的异常类型

问题描述

我有一个如下所示的 try-catch 块

try
{
   // Do something here.
}
catch (const std::exception &e)
{
   // std exception. 
}
catch(...)
{
    // Unknown exception. We can't know the type.
}

我正在阅读来自http://www.cplusplus.com/reference/exception/exception/的一些文档,但对我来说,当代码进入 std::exception 部分时如何知道捕获了什么异常类型并不明显。

有没有办法获取错误类型的字符串?(我不想显示错误消息,只是异常类型)

标签: c++exception

解决方案


有没有办法获取错误类型的字符串?

有点。如果您通过引用捕获(正如您在上面的代码中所做的那样),那么您可以应用typeid到异常以获取有关其动态类型的一些信息。这是std::exception多态类型的事实,这使得这成为可能。但是,不能保证这std::type_info::name()是该类型的可读名称。


推荐阅读