Maison >développement back-end >C++ >Quelle est la différence entre la gestion des erreurs des fonctions C++ et la gestion des exceptions ?
En C++, la gestion des erreurs et la gestion des exceptions sont des mécanismes différents pour gérer les situations inattendues. La gestion des erreurs utilise la variable globale errno ou la fonction GetLastError() pour définir le code d'erreur, et le développeur doit vérifier manuellement l'erreur. La gestion des exceptions génère ou capture des objets d'exception, y compris les informations et les types d'erreurs, et le compilateur gère automatiquement la propagation et la récupération des erreurs. Les principales différences incluent :
Différences entre la gestion des erreurs de fonction et la gestion des exceptions en C++
En C++, la gestion des erreurs et la gestion des exceptions sont des mécanismes différents pour gérer des situations inattendues.
Gestion des erreurs
errno
(standard POSIX) ou la fonction GetLastError()
(API Windows) pour définir un code d'erreur. 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
Les développeurs sont responsables de vérifier les codes d'erreur et de prendre les mesures appropriées.
// 定义文件未找到异常 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; } }🎜🎜Gestion des exceptions🎜🎜🎜🎜Lance ou attrape un ensemble d'objets appelés exceptions. 🎜Les objets exception contiennent des informations sur l'erreur et son type. 🎜Le compilateur gère automatiquement la propagation des erreurs et la récupération. 🎜Exemple : rrreee🎜🎜Différences clés🎜🎜
Fonctionnalités | Gestion des erreurs | Gestion des exceptions |
---|---|---|
Complexité | Faible | Élevée | Contrôle | Le développeur vérifie manuellement les erreurs | Le compilateur automatiquement |
Informations | Code uniquement | Type d'erreur et informations |
Réutilisation | Aucune | Des types d'exception personnalisés peuvent être créés td> |
Performance | Rapide | Plus lent |
FileNotFoundException
lorsque l'ouverture du fichier échoue et gérer l'exception dans le programme principal. 🎜rrreeeCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!