我正在为 C++ 项目创建一个通用错误处理程序。作为日志记录的一部分,我想包含异常类的名称。我希望有一种方法可以从 std::exception 实例中通用地获取特定错误类的名称,而无需使用 dynamic_cast 和逻辑树。
例子:
异常处理程序.h
#pragma once
#include <exception>
#include <string>
class ExceptionHandler
{
public:
static std::string get_exception_type_name(std::exception ex)
{
return ((std::string)typeid(ex).name()).substr(11);
}
};
主文件
#include <iostream>
#include "exception_handler.h"
int _tmain(int argc, _TCHAR* argv[])
{
std::string any = "any";
std::out_of_range ex("Out of range exception");
std::cout << ExceptionHandler::get_exception_type_name(ex) << std::endl;
std::cout << "Press any key to close this window..." << std::endl;
std::cin >> any;
}
执行输出“异常”。我想让它说“out_of_range”或我输入函数的任何其他类型的派生异常。
提前致谢。