Maison > développement back-end > C++ > Comment gérer les exceptions dans les fonctions C++ ?

Comment gérer les exceptions dans les fonctions C++ ?

WBOY
Libérer: 2024-04-23 15:24:01
original
908 Les gens l'ont consulté

En C++, les exceptions sont gérées via l'instruction try-catch : le code dans le bloc try peut lever une exception. Le bloc catch intercepte les exceptions standard ou les exceptions personnalisées. Le mot-clé nosauf déclare que la fonction ne lancera pas d'exceptions pour l'optimisation.

C++ 函数中如何处理异常?

Comment gérer les exceptions dans les fonctions C++ ?

En C++, les exceptions sont gérées via l'instruction try-catch, qui comprend trois parties principales : try-catch 语句处理,包括三个主要部分:

try {
  // 代码块,可能抛出异常
}
catch (const std::exception& e) {
  // 捕获标准异常
}
catch (const MyCustomException& e) {
  // 捕获自定义异常
}
Copier après la connexion

实战案例:

假设我们有一个函数 divide,它计算两个数的商,但当分母为 0 时抛出异常:

int divide(int num, int denom) {
  try {
    if (denom == 0) {
      throw std::runtime_error("除数不能为 0");
    }
    return num / denom;
  }
  catch (const std::exception& e) {
    std::cout << "错误: " << e.what() << std::endl;
  }
}
Copier après la connexion

在主函数中,我们可以调用 divide 函数并捕获异常:

int main() {
  try {
    int dividend = 10;
    int divisor = 0;
    int result = divide(dividend, divisor);
    std::cout << dividend << " / " << divisor << " = " << result << std::endl;
  }
  catch (const std::runtime_error& e) {
    std::cout << e.what() << std::endl;
  }
}
Copier après la connexion

输出:

错误: 除数不能为 0
Copier après la connexion

注意:

  • 函数中也可以抛出自定义异常,通过创建自定义异常类并继承 std::exception
  • 使用 noexceptrrreee
Cas pratique : 🎜🎜🎜Supposons que nous ayons une fonction divide code >, il calcule le quotient de deux nombres, mais lève une exception lorsque le dénominateur est 0 : 🎜rrreee🎜Dans la fonction principale, nous pouvons appeler la fonction <code>divide et intercepter l'exception : 🎜rrreee🎜 Sortie : 🎜 rrreee🎜🎜Remarque : 🎜🎜
  • Des exceptions personnalisées peuvent également être lancées dans des fonctions en créant une classe d'exception personnalisée et en héritant de std::exception. 🎜
  • Utilisez le mot-clé nosauf pour déclarer que la fonction ne lancera pas d'exceptions pour l'optimisation. 🎜🎜

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal