在C++程序中,錯誤處理通常通過以下幾種方式來實現:
int divide(int a, int b, int &result) {
if (b == 0) {
return -1; // 錯誤碼:除數為零
}
result = a / b;
return 0; // 成功
}
try
、catch
和throw
關鍵字來捕獲和處理異常。例如:#include <stdexcept>
int divide(int a, int b) {
if (b == 0) {
throw std::runtime_error("除數為零");
}
return a / b;
}
int main() {
int result;
try {
result = divide(10, 0);
} catch (const std::runtime_error &e) {
std::cerr << "錯誤:" << e.what() << std::endl;
}
return 0;
}
#include <iostream>
#include <cerrno>
#include <cstring>
#define CHECK_FUNCTION_CALL(func) \
if ((func) == -1) { \
std::cerr << "錯誤:" << std::strerror(errno) << std::endl; \
return 1; \
}
int main() {
int fd = open("nonexistent_file.txt", O_RDONLY);
CHECK_FUNCTION_CALL(fd);
close(fd);
return 0;
}
boost::system::error_code
和boost::system::error_condition
。在實際編程中,可以根據程序的需求和風格選擇合適的錯誤處理方法。通常情況下,異常處理適用于處理不可預見的錯誤,而返回錯誤碼和錯誤處理宏適用于處理可預見的錯誤。