ILGenerator.BeginCatchBlock Method

[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]

Begins a catch block.

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

Syntax

Public Overridable Sub BeginCatchBlock ( _
    exceptionType As Type _
)
public virtual void BeginCatchBlock(
    Type exceptionType
)

Parameters

  • exceptionType
    Type: System..::.Type
    The type of the exception that is caught.

Exceptions

Exception Condition
ArgumentException

The catch block is within a filtered exception.

ArgumentNullException

exceptionType is nullNothingnullptra null reference (Nothing in Visual Basic), and the exception filter block has not returned a value that indicates that finally blocks should be run until this catch block is located.

NotSupportedException

The Microsoft intermediate language (MSIL) being generated is not currently in an exception block.

Remarks

Emits a branch instruction to the end of the current exception block.

Note

If the filter exception block returns the constant exception_execute_handler, the argument to the BeginCatchBlock is not checked. For more information, see the Common Language Infrastructure documentation. The documentation is available online; see ECMA C# and Common Language Infrastructure Standards on MSDN and Standard ECMA-335 - Common Language Infrastructure (CLI) on the Ecma International Web site.

Examples

The following example demonstrates the use of the BeginCatchBlock method. This code is part of a larger example provided for the BeginExceptionBlock method.

' Use the Leave instruction to exit a try block. You cannot branch from try
' blocks.
adderIL.Emit(OpCodes.Leave, exTryCatchFinally) 


' Start the catch block for OverflowException.
'
adderIL.BeginCatchBlock(overflowType)

' On entry to the catch block, the thrown exception is on the stack. Store it

' in a local variable.
adderIL.Emit(OpCodes.Stloc_S, thrownException)
// Use the Leave instruction to exit a try block. You cannot branch from try
// blocks.
adderIL.Emit(OpCodes.Leave, exTryCatchFinally);


// Start the catch block for OverflowException.
//
adderIL.BeginCatchBlock(overflowType);

// On entry to the catch block, the thrown exception is on the stack. Store it
// in a local variable.
adderIL.Emit(OpCodes.Stloc_S, thrownException);

Version Information

Windows Phone OS

Supported in: 8.1, 8.0, 7.1

Platforms

Windows Phone

See Also

Reference

ILGenerator Class

System.Reflection.Emit Namespace