在C++中,可以通过构建一个异常类来报告文件和行号。以下是一个示例的异常类的构建方式:
#include <exception>
#include <string>
class FileLineException : public std::exception {
public:
FileLineException(const std::string& file, int line) : file_(file), line_(line) {}
const char* what() const noexcept override {
return message_.c_str();
}
const std::string& getFile() const {
return file_;
}
int getLine() const {
return line_;
}
private:
std::string file_;
int line_;
std::string message_ = "Exception occurred at file: " + file_ + ", line: " + std::to_string(line_);
};
在上述代码中,我们定义了一个名为FileLineException
的异常类,继承自std::exception
。该异常类接受两个参数:文件名和行号,并将其保存在私有成员变量file_
和line_
中。
异常类中重写了what()
函数,该函数返回一个const char*
类型的异常信息。在这个例子中,异常信息包含了文件名和行号。
此外,我们还提供了两个公有成员函数getFile()
和getLine()
,用于获取异常发生的文件名和行号。
使用该异常类的示例如下:
void foo() {
throw FileLineException(__FILE__, __LINE__);
}
int main() {
try {
foo();
} catch (const FileLineException& e) {
std::cout << "Exception caught at file: " << e.getFile() << ", line: " << e.getLine() << std::endl;
}
return 0;
}
在上述代码中,我们在foo()
函数中抛出了一个FileLineException
异常,并传入__FILE__
和__LINE__
宏作为参数。在main()
函数中,我们使用try-catch
块捕获并处理该异常,打印出异常发生的文件名和行号。
这样,通过构建一个异常类,我们可以在C++中报告异常发生的文件和行号,方便调试和定位问题。
腾讯云相关产品和产品介绍链接地址:
请注意,以上链接仅供参考,具体产品选择应根据实际需求进行评估和决策。
领取专属 10元无门槛券
手把手带您无忧上云