在Linux環境下使用C++進行錯誤處理,可以采用以下幾種方法:
#include <iostream>
int divide(int a, int b, int& result) {
if (b == 0) {
return -1; // 錯誤碼,表示除數不能為0
}
result = a / b;
return 0; // 成功執行
}
int main() {
int result;
if (divide(10, 0, result) != 0) {
std::cerr << "Error: Division by zero!" << std::endl;
} else {
std::cout << "Result: " << result << std::endl;
}
return 0;
}
try
、catch
和throw
關鍵字來捕獲和處理異常。#include <iostream>
#include <stdexcept>
int divide(int a, int b) {
if (b == 0) {
throw std::runtime_error("Division by zero!"); // 拋出異常
}
return a / b;
}
int main() {
try {
int result = divide(10, 0);
std::cout << "Result: " << result << std::endl;
} catch (const std::runtime_error& e) {
std::cerr << "Error: " << e.what() << std::endl; // 捕獲并處理異常
}
return 0;
}
errno
來獲取系統調用的錯誤碼。#include <iostream>
#include <cerrno>
#include <cstring>
#include <unistd.h>
int main() {
char buffer[10];
ssize_t bytesRead = read(0, buffer, sizeof(buffer)); // 從標準輸入讀取數據
if (bytesRead == -1) {
std::cerr << "Error reading input: " << std::strerror(errno) << std::endl; // 使用errno獲取錯誤信息
} else {
std::cout << "Read " << bytesRead << " bytes." << std::endl;
}
return 0;
}
#include <iostream>
#include <fstream>
#include <string>
void logError(const std::string& message) {
std::ofstream logFile("error.log", std::ios::app);
if (logFile.is_open()) {
logFile << message << std::endl;
logFile.close();
}
}
int main() {
int result = 10 / 0; // 這將導致運行時錯誤
if (result != 0) {
logError("Division by zero error occurred."); // 記錄錯誤信息到日志文件
}
return 0;
}
在實際開發中,可以根據具體情況選擇合適的錯誤處理方法,或者結合使用多種方法以提高程序的健壯性和可維護性。