Maison > développement back-end > C++ > Comment puis-je détecter efficacement plusieurs exceptions dans un seul bloc de code ?

Comment puis-je détecter efficacement plusieurs exceptions dans un seul bloc de code ?

Barbara Streisand
Libérer: 2025-01-20 23:17:12
original
818 Les gens l'ont consulté

How Can I Efficiently Catch Multiple Exceptions in a Single Code Block?

Détectez plusieurs exceptions dans un seul bloc de code

Dans les langages de programmation, la détection des exceptions est une partie importante de la gestion des erreurs. Cependant, lorsque plusieurs exceptions spécifiques doivent être interceptées, en particulier lors de l'exécution de plusieurs opérations sur un objet, cela peut devenir verbeux et répétitif.

Question :

Considérez le code suivant dans lequel vous essayez d'analyser un GUID à partir d'une chaîne de requête et de le définir sur un champ :

<code>try
{
    WebId = new Guid(queryString["web"]);
}
catch (FormatException)
{
    WebId = Guid.Empty;
}
catch (OverflowException)
{
    WebId = Guid.Empty;
}</code>
Copier après la connexion

Dans cet exemple, si une FormatException ou OverflowException se produit lors de l'analyse du GUID, le WebId sera défini sur Guid.Empty. Cependant, si une autre exception inattendue est rencontrée, elle se propagera sans être traitée. Pour éviter le code passe-partout et gérer efficacement plusieurs exceptions, une meilleure solution est nécessaire.

Solution : intercepter System.Exception et changer en fonction du type

Pour intercepter plusieurs exceptions dans un seul bloc de code, vous pouvez utiliser la syntaxe catch (Exception ex). Cela interceptera toutes les exceptions héritées de la classe Exception de base, y compris les exceptions spécifiques telles que FormatException et OverflowException.

Après avoir détecté une exception, vous pouvez utiliser une instruction switch basée sur le type d'exception pour déterminer comment la gérer. Si l'exception est une exception connue (par exemple, FormatException ou OverflowException), vous pouvez effectuer des actions spécifiques (par exemple, définir WebId sur Guid.Empty). Sinon, vous pouvez relancer l'exception pour permettre au code de niveau supérieur de la gérer.

<code>catch (Exception ex)            
{                
    if (ex is FormatException || ex is OverflowException)
    {
        WebId = Guid.Empty;
    }
    else
        throw;
}</code>
Copier après la connexion

Cette approche vous permet d'intercepter plusieurs exceptions spécifiques dans un bloc de code et de les gérer selon vos besoins, tout en permettant la propagation d'exceptions inattendues.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal