ILGenerator.BeginFinallyBlock Method

Begins a finally block in the Microsoft intermediate language (MSIL) instruction stream.

Namespace:  System.Reflection.Emit
Assembly:  mscorlib (in mscorlib.dll)

Syntax

'Declaration
Public Overridable Sub BeginFinallyBlock
public virtual void BeginFinallyBlock()

Exceptions

Exception Condition
NotSupportedException

The MSIL that is being generated is not currently in an exception block.

Examples

The following example illustrates the use of BeginFinallyBlock to define a finally block within an exception block. This code is part of a larger example provided for the BeginExceptionBlock method.

adderIL.BeginFinallyBlock()

' The finally block block displays a message on the TextBlock, if the 
' OutputBlock field has been set. Just as in the catch block, the following
' code tests whether the TextBlock is present, and skips the output if it is
' not present.
adderIL.Emit(OpCodes.Ldsfld, demoOutput)
adderIL.Emit(OpCodes.Ldnull)
adderIL.Emit(OpCodes.Ceq)
adderIL.Emit(OpCodes.Brtrue_S, skipOutputInFinally)

' Append a constant string to the Text property of the TextBlock.
adderIL.Emit(OpCodes.Ldsfld, demoOutput)
adderIL.Emit(OpCodes.Ldsfld, demoOutput)
adderIL.Emit(OpCodes.Callvirt, getter)
adderIL.Emit(OpCodes.Ldstr, "Executing the finally block." & vbLf)
adderIL.Emit(OpCodes.Call, concat2)
adderIL.Emit(OpCodes.Callvirt, setter)

adderIL.MarkLabel(skipOutputInFinally)
' This is the end of the try/catch/finally block.
adderIL.EndExceptionBlock()
adderIL.BeginFinallyBlock();

// The finally block block displays a message on the TextBlock, if the 
// OutputBlock field has been set. Just as in the catch block, the following
// code tests whether the TextBlock is present, and skips the output if it is
// not present.
adderIL.Emit(OpCodes.Ldsfld, demoOutput);
adderIL.Emit(OpCodes.Ldnull);
adderIL.Emit(OpCodes.Ceq);
adderIL.Emit(OpCodes.Brtrue_S, skipOutputInFinally);

// Append a constant string to the Text property of the TextBlock.
adderIL.Emit(OpCodes.Ldsfld, demoOutput);
adderIL.Emit(OpCodes.Ldsfld, demoOutput);
adderIL.Emit(OpCodes.Callvirt, getter);
adderIL.Emit(OpCodes.Ldstr, "Executing the finally block.\n");
adderIL.Emit(OpCodes.Call, concat2);
adderIL.Emit(OpCodes.Callvirt, setter);

adderIL.MarkLabel(skipOutputInFinally);
// This is the end of the try/catch/finally block.
adderIL.EndExceptionBlock();

Version Information

Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1

Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.