在 C 中,錯誤處理和異常處理是處理意外狀況的不同機制。錯誤處理使用 errno 全域變數或 GetLastError() 函數設定錯誤碼,需由開發人員手動檢查錯誤。異常處理則拋出或捕獲異常對象,包含錯誤訊息和類型,由編譯器自動處理錯誤傳播和恢復。主要差異包括:
C 函數錯誤處理與異常處理的差異
在C 中,錯誤處理和異常處理是處理意外狀況的不同機制。
錯誤處理
errno
全域變數(POSIX 標準)或GetLastError()
函數(Windows API)設定一個錯誤碼。 // 打开文件 FILE* fp = fopen("file.txt", "r"); // 检查错误 if (fp == NULL) { int errnum = errno; // 根据 errnum 采取适当的措施 }
異常處理
class MyException : public exception { public: const char* what() const noexcept { return "This is an example exception."; } }; // 抛出一个异常 throw MyException(); // 捕获异常 try { // 代码可能抛出异常 } catch (MyException& e) { // 处理 MyException 异常 }
關鍵差異
#錯誤處理 | 異常處理 | |
---|---|---|
複雜性 | ||
##控制 | 開發人員手動檢查錯誤 | 編譯器自動 |
#訊息 | 僅程式碼 | 錯誤類型與資訊 |
無
#可以建立自訂例外類型// 定义文件未找到异常 class FileNotFoundException : public exception { public: const char* what() const noexcept { return "File not found."; } }; // 打开文件的函数 void openFile(const char* filename) { FILE* fp = fopen(filename, "r"); if (fp == NULL) { throw FileNotFoundException(); } } // 主程序 int main() { try { openFile("myfile.txt"); } catch (FileNotFoundException&) { cout << "File not found." << endl; } }
以上是C++ 函式錯誤處理與異常處理有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!