我需要创建一个异常处理,因为我还要求打印操作的状态,如
“文件打开:操作成功完成”
“文件关闭:操作成功完成”,
等等
是否有像 __LINE__,__FUNCTION__,__FILE__
这样的宏?
或者是否有任何提升功能可用于执行此操作?
最佳答案
我想答案是你想对正在评估的表达式进行字符串化?
代码:
#include <stdexcept>
#include <sstream>
#include <iostream>
void check_result(bool result, const char* file, int line_number, const char* line_contents)
{
if (!result) {
//for example:
std::stringstream ss;
ss << "Failed: " << line_contents << " in " << file << ' ' << line_number;
throw std::runtime_error(ss.str());
}
}
#define CALL_AND_CHECK(expression) check_result((expression), __FILE__, __LINE__, #expression)
bool foobar(bool b) { return b; }
int main()
{
try {
CALL_AND_CHECK(foobar(true));
CALL_AND_CHECK(foobar(false));
} catch (const std::exception& e) {
std::cout << e.what() << '\n';
}
}
关于C++ - 有什么方法可以获取当前执行行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5115193/