多层捕获异常,逐渐严格。并打印出错信息和位置:哪个文件,哪个函数,具体哪一行代码。
#include <stdexcept> // 包含标准异常类的头文件
try {
int a = 2 / 0;
}
catch (const std::runtime_error& e) {
// 捕获 std::runtime_error 类型的异常
std::cerr << "Exception caught: " << e.what() << __FILE__ << __FUNCTION__ << __LINE__ << std::endl;
}
catch (const std::exception& e) {
// 捕获其他继承自 std::exception 的异常
std::cerr << "Some other exception caught: " << e.what() << __FILE__ << __FUNCTION__ << __LINE__ << std::endl;
}
catch (...) {
// 捕获所有其他类型的异常
std::cerr << "Unknown exception caught" << __FILE__ << __FUNCTION__ << __LINE__ << std::endl;
}
std::cout << " 检测结束" << std::endl;
return is_defect;
}