Emit学习-进阶篇-异常处理2011-09-03 博客园 yingql异常的处理也是程序中比较重要的一个部分,今天我们就针对用IL书写异常处 理代码进行讲解,首先照例给出要实现的类的C#代码,如下:ExceptionHandler
class ExceptionHandler{ public static int ConvertToInt32(string str) { int num = 0; try { num = Convert.ToInt32(str); } catch (Exception ex) { Console.WriteLine(ex.Message); } return num; }}
代码比较简单,主要就是阐述如何在IL代码中加入try、catch块。这里面会用 到ILGenerator类中的几个新方法,介绍如下:l BeginExceptionBlock:用来表示需要异常处理的代码的开始,相当于C# 代码中的try关键字;l EndExceptionBlock:这个与BeginExceptionBlock配对,用来表示异常处 理的结束。注意:这里的结束并不是只try语句块的结束,而是指整个try catch 语句块的结束;l BeginCatchBlock:这个用来表示catch操作的开始,该方法需要传入要需 要捕捉的一场的类型,程序中可以有多个BeginCatchBlock,即多个catch块。