【发布时间】:2019-12-12 21:09:24
【问题描述】:
我有一个如下所示的 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# 上使用 getType 函数那样做到这一点,对吧?
-
与 C# 相比,C++ 的类型反射功能非常有限。最接近的可能是
type_info,但您获得的名称取决于平台,除了打印或日志记录之外不是很有用。编辑:看起来@Brian 的回答涵盖了这一点。 -
是的,这是为了记录目的,所以我认为这样可以解决问题。试图弄清楚这是如何工作的