Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale
Questo argomento non è stato ancora valutato - Valuta questo argomento

Proprietà ExceptionHandlingClause.HandlerOffset

Ottiene l'offset all'interno del corpo del metodo, in byte, di questa clausola di gestione delle eccezioni.

Spazio dei nomi:  System.Reflection
Assembly:  mscorlib (in mscorlib.dll)
public virtual int HandlerOffset { get; }

Valore proprietà

Tipo: System.Int32
Intero che rappresenta l'offset all'interno del corpo del metodo, in byte, di questa clausola di gestione delle eccezioni.
NotaNota

Utilizzo delle clausole di gestione delle eccezioni è necessaria una conoscenza approfondita dei formati) MSIL (all'istruzione di Microsoft Intermediate Language) e di metadati. Le informazioni possono essere contenute nella documentazione (CLI) CLI (Common Language Infrastructure), in particolare la seconda: Definizione di metadati e semantica„ e “partition III: CIL instruction set„. La documentazione è disponibile online, vedere C# ECMA e standard di Common Language Infrastructure in MSDN e Standard ECMA-335 (Common Language Infrastructure (CLI) nel sito Web internazionali ECMA.

Il codice riportato di seguito viene definito un metodo di test denominato MethodBodyExamplee visualizza le informazioni e clausole di gestione delle eccezioni di variabile locale. MethodBase.GetMethodBody il metodo viene utilizzato per ottenere un oggetto MethodBody oggetto per il metodo di test. ExceptionHandlingClauses la proprietà viene utilizzata per ottenere un elenco di ExceptionHandlingClause gli oggetti e le relative proprietà.

NotaNota

non tutti i linguaggi di programmazione possono generare ExceptionHandlingClauseOptions.Filter clausole. Nell'esempio di Visual Basic viene illustrata una clausola di filtro, utilizzando Visual Basic When espressione, che viene omessa gli esempi per altri linguaggi.

Questo codice fa parte di un esempio più esaustivo trova in MethodBody argomento relativo alle classi.


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

Supportato in: 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Il documento è risultato utile?
(1500 caratteri rimanenti)

Aggiunte alla community

AGGIUNGI
© 2013 Microsoft. Tutti i diritti riservati.