Maison > Article > développement back-end > Gestion des exceptions et spécificateurs d'exception pour les fonctions C++
La gestion des exceptions gère les erreurs d'exécution, y compris le lancement, la capture et la gestion des exceptions. Les spécificateurs d'exception sont utilisés pour spécifier les types d'exceptions qu'une fonction peut lever, notamment nosauf(expr) (spécifie de ne pas lever d'exception) et throw() (spécifie que tout type d'exception peut être levé). Dans le cas réel, la fonction print_file utilise le spécificateur throw() et utilise le bloc try-catch pour intercepter l'exception std::runtime_error dans la fonction principale et gérer l'erreur d'ouverture de fichier.
Gestion des exceptions et spécificateurs d'exceptions des fonctions C++
La gestion des exceptions est le mécanisme clé pour gérer les erreurs d'exécution. Elle est divisée en trois parties : l'émission d'exceptions, la capture d'exceptions et la gestion des exceptions. En C++, les exceptions sont représentées par des classes d'exceptions.
Lancez une exception
Utilisez le mot-clé throw
pour lever une exception. Une exception peut être une classe d’exception ou n’importe quel objet doté de fonctionnalités spécifiques. Par exemple : throw
关键字抛出异常。异常类或具有特定功能的任意对象都可以作为异常。例如:
throw std::runtime_error("失败!");
捕获异常
使用 try-catch
块捕获异常。try
块包含可能抛出异常的代码,而 catch
块指定如何处理不同类型的异常。例如:
try { // 可能抛出异常的代码 } catch (const std::runtime_error& e) { // 处理 std::runtime_error 异常 } catch (const std::exception& e) { // 处理所有其他异常 }
异常说明符
异常说明符添加到函数签名中,以指定函数可以抛出的异常类型。有两种异常说明符:
expr
为常量表达式。实战案例
考虑一个读取文件并将其打印到控制台的函数。该函数可能会由于文件不存在或访问被拒绝而引发异常。我们可以使用异常说明符和 try-catch
块来处理这些情况。
#include <iostream> #include <fstream> void print_file(const std::string& file_name) { std::ifstream file(file_name); if (!file.is_open()) throw std::runtime_error("无法打开文件!"); std::string line; while (std::getline(file, line)) { std::cout << line << std::endl; } } int main() { try { print_file("test.txt"); } catch (const std::runtime_error& e) { std::cerr << e.what() << std::endl; } return 0; }
在函数 print_file
中,异常说明符 throw()
指定该函数可以抛出任何类型的异常。在 main
函数中,我们使用 try-catch
块来处理异常。如果打开文件时发生错误,则会抛出 std::runtime_error
rrreee
try-catch
pour intercepter les exceptions. Les blocs try
contiennent du code qui peut lever des exceptions, tandis que les blocs catch
spécifient comment gérer différents types d'exceptions. Par exemple : 🎜rrreee🎜🎜Spécificateurs d'exception 🎜🎜🎜Des spécificateurs d'exception sont ajoutés aux signatures de fonction pour spécifier les types d'exceptions que la fonction peut lever. Il existe deux spécificateurs d'exception : 🎜expr
est une expression constante. try-catch
pour gérer ces situations. 🎜rrreee🎜Dans la fonction print_file
, le spécificateur d'exception throw()
spécifie que la fonction peut lever tout type d'exception. Dans la fonction main
, nous utilisons un bloc try-catch
pour gérer les exceptions. Si une erreur se produit lors de l'ouverture du fichier, une exception std::runtime_error
est levée et un message d'erreur est imprimé sur la console. 🎜Ce 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!