在C++中,標(biāo)準(zhǔn)異常類是從std::exception
類派生出來的。要?jiǎng)?chuàng)建自定義異常類,你需要遵循以下步驟:
<exception>
頭文件,以便使用std::exception
類。#include <exception>
std::exception
派生的新類,作為你的自定義異常類的基類。class MyException : public std::exception {
// ...
};
const char*
參數(shù)的構(gòu)造函數(shù),以便將錯(cuò)誤信息傳遞給基類std::exception
的構(gòu)造函數(shù)。class MyException : public std::exception {
public:
// 默認(rèn)構(gòu)造函數(shù)
MyException() noexcept : message("MyException occurred") {}
// 接受錯(cuò)誤信息的構(gòu)造函數(shù)
explicit MyException(const char* message) noexcept : message(message) {}
// 接受格式化字符串的構(gòu)造函數(shù)
explicit MyException(const char* format, ...) noexcept {
va_list args;
va_start(args, format);
int size = std::vsnprintf(nullptr, 0, format, args);
va_end(args);
std::vector<char> buffer(size + 1);
va_start(args, format);
std::vsnprintf(buffer.data(), buffer.size(), format, args);
va_end(args);
message = buffer.data();
}
private:
const char* message;
};
int main() {
try {
throw MyException("An error occurred");
} catch (const MyException& e) {
std::cerr << "Caught exception: " << e.what() << std::endl;
}
return 0;
}
這是一個(gè)簡單的自定義異常類示例。你可以根據(jù)需要擴(kuò)展它,例如添加其他構(gòu)造函數(shù)、成員變量或方法。