C++에서 오류 처리와 예외 처리는 예상치 못한 상황을 처리하기 위한 서로 다른 메커니즘입니다. 오류 처리는 errno 전역 변수나 GetLastError() 함수를 사용하여 오류 코드를 설정하며 개발자가 수동으로 오류를 확인해야 합니다. 예외 처리는 오류 정보 및 유형을 포함한 예외 개체를 발생시키거나 캡처하며, 컴파일러는 오류 전파 및 복구를 자동으로 처리합니다. 주요 차이점은 다음과 같습니다.
C++에서 함수 오류 처리와 예외 처리의 차이점
C++에서 오류 처리와 예외 처리는 예상치 못한 상황을 처리하기 위한 서로 다른 메커니즘입니다.
오류 처리
errno
전역 변수(POSIX 표준) 또는 GetLastError()
함수(Windows API)를 사용하여 오류 코드를 설정하세요. 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 异常 }
关键差异
特征 | 错误处理 | 异常处理 |
---|---|---|
复杂性 | 低 | 高 |
控制 | 开发人员手动检查错误 | 编译器自动 |
信息 | 仅代码 | 错误类型和信息 |
重用 | 无 | 可以创建自定义异常类型 |
性能 | 较快 | 较慢 |
实战案例:文件操作
考虑使用文件操作的函数。我们可以在文件打开失败时抛出 FileNotFoundException
오류 코드를 확인하고 적절한 조치를 취할 책임은 개발자에게 있습니다.
// 定义文件未找到异常 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; } }
기능 | 오류 처리 | 예외 처리 | |
---|---|---|---|
복잡성 | 낮음 | 높음 | 제어 | 개발자가 수동으로 오류 확인 | 컴파일러가 자동으로 |
정보 | 코드 전용 | 오류 유형 및 정보 | |
재사용 | 없음 | 사용자 정의 예외 유형 생성 가능 | td> |
성능 | 빠름 | 느림 |
FileNotFoundException
예외를 발생시키고 기본 프로그램에서 예외를 처리할 수 있습니다. 🎜아아아아위 내용은 C++ 함수 오류 처리와 예외 처리의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!