Maison > développement back-end > C++ > le corps du texte

Exceptions de fonctions C++ et programmation de modèles : gestion générique des erreurs

PHPz
Libérer: 2024-05-03 08:33:02
original
346 Les gens l'ont consulté

Utilisez la gestion des exceptions et la programmation de modèles pour implémenter la gestion générique des erreurs. 1. Gestion des exceptions : utilisez le mécanisme try-catch-throw pour lancer des exceptions dans les fonctions. 2. Programmation de modèles : créez un code générique pouvant être utilisé pour tout type d'erreur, y compris des gestionnaires d'erreurs génériques capables de gérer tout type d'erreur. 3. Gestion générique des erreurs : utilisez les fonctions de modèle pour fournir une gestion personnalisée de différents types d'exceptions et relancer les exceptions inconnues.

C++ 函数异常与模板编程:泛型错误处理

Exceptions fonctionnelles C++ et programmation de modèles : gestion générique des erreurs

Introduction

En C++, les exceptions sont un mécanisme puissant pour gérer les erreurs dans les fonctions. Lorsqu'une fonction détecte une erreur, elle peut lever une exception, permettant ainsi à l'erreur d'être détectée et gérée. La programmation de modèles nous permet de créer du code générique pouvant être utilisé pour n'importe quel type. Cet article explique comment utiliser les exceptions et la programmation de modèles pour la gestion générique des erreurs.

Gestion des exceptions

La gestion des exceptions en C++ utilise trycatchthrow 关键字实现。当函数检测到错误时,它可以使用 throw 关键字抛出一个异常。异常类型是一个派生自 std::exception classes.

L'exemple suivant illustre la gestion des exceptions :

void divide(int num1, int num2) {
    try {
        if (num2 == 0) {
            throw std::invalid_argument("Divisor cannot be 0");
        }
        int result = num1 / num2;
        std::cout << result << std::endl;
    } catch (std::invalid_argument& e) {
        std::cout << e.what() << std::endl;
    }
}
Copier après la connexion

Programmation de modèles

La programmation de modèles nous permet de créer du code générique qui peut être utilisé pour n'importe quel type. Les fonctions et les classes peuvent être paramétrées à l'aide de modèles.

L'exemple suivant illustre les fonctions du modèle :

template<typename T>
T max(T a, T b) {
    return (a > b) ? a : b;
}
Copier après la connexion

Gestion générique des erreurs

Nous pouvons utiliser la gestion des exceptions et la programmation de modèles pour créer un gestionnaire d'erreurs générique capable de gérer tout type d'erreur.

L'exemple suivant montre une fonction générique de gestion des erreurs :

template<typename T>
void handleError(T error) {
    if (std::is_same<T, std::invalid_argument>::value) {
        std::cout << "Invalid argument: " << error.what() << std::endl;
    } else if (std::is_same<T, std::out_of_range>::value) {
        std::cout << "Out of range: " << error.what() << std::endl;
    } else {
        throw error;
    }
}
Copier après la connexion

Cas pratique

L'exemple suivant montre comment utiliser la gestion générique des erreurs dans une fonction :

void processData(const std::vector<int>& data) {
    try {
        // ... 处理数据 ...
        if (// 检测到错误) {
            throw std::invalid_argument("Invalid data");
        }
    } catch (std::exception& e) {
        handleError(e);
    }
}
Copier après la connexion

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!