.assembly 'exception' { } .assembly extern 'mscorlib' { .ver 1:0:5000:0 .publickeytoken = ( b7 7a 5c 56 19 34 e0 89 ) } .class 'test' extends [mscorlib]System.Object { .method hidebysig static private void 'F'() { .try { .try { call void 'test'::'G'() leave $3 } catch [mscorlib]System.Exception { .locals init ([0]class [mscorlib]System.Exception 'e') stloc 0 // e ldstr "Exception in F: " ldloc 0 // e callvirt instance string [mscorlib]System.Exception::'get_Message'() call string [mscorlib]System.String::'Concat'(object,object) call void [mscorlib]System.Console::'WriteLine'(string) ldstr "F" newobj instance void [mscorlib]System.Exception::.ctor(string) stloc 0 // e ldloc 0 // e throw leave $3 } catch [mscorlib]System.Object { pop leave $3 } // end .try $3: leave $2 } finally { ldstr "F finally block" call void [mscorlib]System.Console::'WriteLine'(string) endfinally } // end .try $2: $1: ret .maxstack 2 } // end of method test.F .method hidebysig static private void 'G'() { ldstr "G" newobj instance void [mscorlib]System.Exception::.ctor(string) throw ret .maxstack 2 } // end of method test.G .method hidebysig public static void 'Main'() { .entrypoint .try { call void 'test'::'F'() leave $2 } catch [mscorlib]System.Exception { .locals init ([0]class [mscorlib]System.Exception 'e') stloc 0 // e ldstr "Exception in Main: " ldloc 0 // e callvirt instance string [mscorlib]System.Exception::'get_Message'() call string [mscorlib]System.String::'Concat'(object,object) call void [mscorlib]System.Console::'WriteLine'(string) leave $2 } // end .try $2: $1: ret .maxstack 2 } // end of method test.Main .method hidebysig specialname rtspecialname public void .ctor() { ldarg.0 call instance void [mscorlib]System.Object::.ctor() ret .maxstack 1 } // end of constructor test.test } // end of class test