(一):try-catch语句
try-catch语句是由一个try块后跟一个或者多个catch子句构成,这些子句指定不同的异常处理程序。
try块包含可能导致异常的保护代码。该块一直执行到引发异常或成功完成为止。
catch子句使用时不带任何参数,这种情况下它捕获任何类型的异常,并被称为一般catch子句。它还可以接受从System.Exception派生的对象参数,这种情况下他处理特定的异常。例如:
1 static void Main(string[] args) 2 { 3 try 4 { 5 //除数不能为0 6 int numone = 0; 7 float numtwo = 123 / numone; 8 } 9 catch (Exception ex) 10 { 11 //获取描述当前异常的信息 12 Console.WriteLine(ex.Message); 13 } 14 }
代码执行的结果为:“尝试除以0”
注意:try块后跟多个catch子句时,catch块的顺序很重要,因为会按顺序检查catch子句。将先捕获特定程度较高的异常,然后捕获特定程度较小的异常。
(二):try-finally语句
finally块用于清楚try中分配任何资源,以及运行任何即使在发生异常时也必须执行的代码。控制台总是传递给finally块,与try块的退出方式无关。
catch用于处理语句块中出现的异常,而finally用于保证代码语句的执行,与前面的try的退出方式无关。例如:
1 static void Main(string[] args) 2 { 3 int numone = 0; 4 try 5 { 6 //除数不能为0 7 float numtwo = 123 / numone; 8 } 9 finally 10 { 11 Console.WriteLine(numone); 12 } 13 }
此段代码虽然引发了异常,但finally块中的输出语句任然会执行。
(三):try-catch-finally语句
通常,try块、catch块、finally块是一起使用的。在try块中获取并使用资源,在catch块中处理异常情况,并在finally块中释放资源。
(四):throw语句
throw语句用于立即无条件的引发异常,控制永远不会到达紧跟在throw的语句。通常throw语句与try-catch语句或try-finally语句一起使用。当引发异常时,程序查找处理此异常的catch语句.