Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

ExceptionHandlingClause classe

 

Date de publication : novembre 2016

Représente une clause dans un bloc de gestion des exceptions structurée.

Espace de noms:   System.Reflection
Assembly:  mscorlib (dans mscorlib.dll)

System.Object
  System.Reflection.ExceptionHandlingClause

[ComVisibleAttribute(true)]
public class ExceptionHandlingClause

NomDescription
System_CAPS_protmethodExceptionHandlingClause()

Initialise une nouvelle instance de la classe ExceptionHandlingClause.

NomDescription
System_CAPS_pubpropertyCatchType

Obtient le type d’exception géré par cette clause.

System_CAPS_pubpropertyFilterOffset

Obtient l’offset dans le corps de méthode, en octets, du code de filtre fourni par l’utilisateur.

System_CAPS_pubpropertyFlags

Obtient une valeur indiquant si cette clause de gestion des exceptions est une clause finally, une clause filtrée par type ou une clause filtrées par l’utilisateur.

System_CAPS_pubpropertyHandlerLength

Obtient la longueur, en octets, du corps de cette clause de gestion des exceptions.

System_CAPS_pubpropertyHandlerOffset

Obtient l’offset dans le corps de méthode, en octets, de cette clause de gestion des exceptions.

System_CAPS_pubpropertyTryLength

La longueur totale, en octets, du bloc try qui inclut cette clause de gestion des exceptions.

System_CAPS_pubpropertyTryOffset

Offset dans la méthode, en octets, du bloc try qui inclut cette clause de gestion des exceptions.

NomDescription
System_CAPS_pubmethodEquals(Object)

Détermine si l'objet spécifié est identique à l'objet actuel.(Hérité de Object.)

System_CAPS_protmethodFinalize()

Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)

System_CAPS_pubmethodGetHashCode()

Fait office de fonction de hachage par défaut.(Hérité de Object.)

System_CAPS_pubmethodGetType()

Obtient le Type de l'instance actuelle.(Hérité de Object.)

System_CAPS_protmethodMemberwiseClone()

Crée une copie superficielle du Object actuel.(Hérité de Object.)

System_CAPS_pubmethodToString()

Représentation sous forme de chaîne de la clause de gestion des exceptions.(Remplace Object.ToString().)

La ExceptionHandlingClause classe fournit des informations sur les clauses dans un try...catchfinally bloc (Try...CatchFinally en Visual Basic). Pour obtenir une liste des clauses de gestion des exceptions dans une méthode, obtenez un MethodInfo qui représente la méthode. Utilisez le GetMethodBody méthode pour obtenir un MethodBody objet, puis utiliser le ExceptionHandlingClauses propriété à obtenir la liste des clauses.

System_CAPS_noteRemarque

L’utilisation des clauses de gestion des exceptions requiert une connaissance approfondie des métadonnées et des formats d’instructions Microsoft intermediate language (MSIL). Vous trouverez des informations dans la documentation du Common Language Infrastructure (CLI), en particulier « Partition II : définition et sémantique des métadonnées » et « Partition III : CIL Instruction Set ». La documentation est disponible en ligne. consultez la page ECMA C# and Common Language Infrastructure Standards sur MSDN et Standard ECMA-335 - Common Language Infrastructure (CLI) sur le site Web Ecma International.

L’exemple de code suivant définit une méthode de test nommée MethodBodyExample, et affiche ses informations de variable locale et les clauses de gestion des exceptions. Le MethodBase.GetMethodBody méthode est utilisée pour obtenir un MethodBody objet pour la méthode de test. Le ExceptionHandlingClauses propriété est utilisée pour obtenir une liste des ExceptionHandlingClause des objets et d’afficher leurs propriétés.

Vous pouvez utiliser Ildasm.exe pour examiner le MSIL pour l’exemple de code compilé pour voir comment les offsets et les longueurs sont calculés.

System_CAPS_noteRemarque

Pas tous les langages de programmation peuvent générer ExceptionHandlingClauseOptions.Filter clauses. L’exemple Visual Basic montre une clause de filtre, à l’aide de Visual Basic When expression, qui est omise des exemples pour d’autres langues.

Ce code fait partie d’un exemple plus développé disponible dans le MethodBody rubrique de la classe.

using System;
using System.Reflection;

public class Example
{
    public static void Main()
    {
        // Get method body information.
        MethodInfo mi = typeof(Example).GetMethod("MethodBodyExample");
        MethodBody mb = mi.GetMethodBody();
        Console.WriteLine("\r\nMethod: {0}", mi);

        // Display the general information included in the 
        // MethodBody object.
        Console.WriteLine("    Local variables are initialized: {0}", 
            mb.InitLocals);
        Console.WriteLine("    Maximum number of items on the operand stack: {0}", 
            mb.MaxStackSize);

// Display exception handling clauses.
Console.WriteLine();
foreach (ExceptionHandlingClause ehc in mb.ExceptionHandlingClauses)
{
    Console.WriteLine(ehc.Flags.ToString());

    // The FilterOffset property is meaningful only for Filter
    // clauses. The CatchType property is not meaningful for 
    // Filter or Finally clauses. 
    switch (ehc.Flags)
    {
        case ExceptionHandlingClauseOptions.Filter:
            Console.WriteLine("        Filter Offset: {0}", 
                ehc.FilterOffset);
            break;
        case ExceptionHandlingClauseOptions.Finally:
            break;
        default:
            Console.WriteLine("    Type of exception: {0}", 
                ehc.CatchType);
            break;
    }

    Console.WriteLine("       Handler Length: {0}", ehc.HandlerLength);
    Console.WriteLine("       Handler Offset: {0}", ehc.HandlerOffset);
    Console.WriteLine("     Try Block Length: {0}", ehc.TryLength);
    Console.WriteLine("     Try Block Offset: {0}", ehc.TryOffset);
}
    }

    // The Main method contains code to analyze this method, using
    // the properties and methods of the MethodBody class.
    public void MethodBodyExample(object arg)
    {
        // Define some local variables. In addition to these variables,
        // the local variable list includes the variables scoped to 
        // the catch clauses.
        int var1 = 42;
        string var2 = "Forty-two";

        try
        {
            // Depending on the input value, throw an ArgumentException or 
            // an ArgumentNullException to test the Catch clauses.
            if (arg == null)
            {
                throw new ArgumentNullException("The argument cannot be null.");
            }
            if (arg.GetType() == typeof(string))
            {
                throw new ArgumentException("The argument cannot be a string.");
            }        
        }

        // There is no Filter clause in this code example. See the Visual 
        // Basic code for an example of a Filter clause.

        // This catch clause handles the ArgumentException class, and
        // any other class derived from Exception.
        catch(Exception ex)
        {
            Console.WriteLine("Ordinary exception-handling clause caught: {0}", 
                ex.GetType());
        }        
        finally
        {
            var1 = 3033;
            var2 = "Another string.";
        }
    }
}

// This code example produces output similar to the following:
//
//Method: Void MethodBodyExample(System.Object)
//    Local variables are initialized: True
//    Maximum number of items on the operand stack: 2
//
//Clause
//    Type of exception: System.Exception
//       Handler Length: 21
//       Handler Offset: 70
//     Try Block Length: 61
//     Try Block Offset: 9
//Finally
//       Handler Length: 14
//       Handler Offset: 94
//     Try Block Length: 85
//     Try Block Offset: 9

.NET Framework
Disponible depuis 2.0

Tous les membres statiques publics ( Shared en Visual Basic) de ce type sont thread-safe. Les membres d’instance n’ont pas la garantie d’être thread-safe.

Retour au début
Afficher: