Tôi đang cố gắng làm một runtime_error tùy chỉnh đơn giản. Tôi xác định các lớp:Làm cách nào để tạo lớp lỗi thời gian chạy tùy chỉnh của riêng tôi?
#include <string>
#include <stdexcept>
namespace utils{
class FileNotFoundException: public std::runtime_error{
public:
FileNotFoundException():runtime_error("File not found"){}
FileNotFoundException(std::string msg):runtime_error(msg.c_str()){}
};
};
Sau đó, tôi ném lỗi:
bool checkFileExistence(std::string fileName)
{
boost::filesystem::path full_path = boost::filesystem::system_complete(boost::filesystem::path(fileName));
if (!boost::filesystem::exists(full_path))
{
char msg[500];
_snprintf(msg,500,"File %s doesn't exist",fileName.c_str());
throw new FileNotFoundException(msg);
}
}
Và tôi sử dụng một khối try/catch
try{
checkFileExistence(fileName);
}
catch(utils::FileNotFoundException& fnfe)
{
std::cout << fnfe.what() << std::endl;
}
Runtime lỗi được ném một cách chính xác như FileNotFoundException nhưng dòng với std :: cout là không bao giờ đạt được và không có dòng được ghi vào giao diện điều khiển.
Tất cả các ý tưởng đều được chào đón. Cảm ơn!
Bạn có thể muốn sử dụng đối số mặc định thay vì ghi đè trong lớp ngoại lệ của mình. –