如何知道 std::exception 的异常类型

use*_*624 3 c++ exception

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

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

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

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

Bri*_*ian 5

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

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

  • @user3587624:`std::cout << typeid(e).name();` (2认同)