2.7 异常处理语句

  在传统的ASP开发过程中,要发现错误是非常复杂和困难的,常常错误发生后,很难找到错误的代码行。C#为处理程序执行期间可能出现的异常情况提供内置支持,这些异常由正常控制流之外的代码处理。常用的异常语句包括throw,try,catch等。

2.7.1 throw异常语句
  throw语句用于发出在程序执行期间出现的异常情况的信号、引发异常的是一个对象,该对象的类是从System.Exception派生的。通常throw语句与try-catch或try-final语句一起使用。示例代码如下所示。
+展开
-C#
            int x = 1;//声明整型变量x
            int y = 0;//声明整型变量y
            if (y == 0) //如果y等于0
            {
                throw new ArgumentException();//抛出异常
            }
            Console.WriteLine("除数不能为0");//输出错误信息

  上述代码使用throw语句引发异常并向用户输出了异常信息。

2.7.2 try-catch异常语句
  try-catch语句由一个try和一个或多个catch子句构成,这些子句可以指定不同的异常处理应用程序。当try块中的代码异常,则会执行catch块的保护代码,在应用程序开发当中,try-catch语句能够处理异常并返回给用户友好的错误提示,示例代码如下所示。
+展开
-C#
            int x = 1;//声明整型变量x
            int y = 0;//声明整型变量y
            try//尝试处理代码块
            {
                x = x / y;//出现异常
            }
            catch//捕获异常
            {
                Console.WriteLine("除数不能为空");//抛出异常
            }

  上述代码试图用一个整型变量除以一个值为0的整型变量,不使用try-catch捕捉异常,则系统会抛出异常跳转到开发环境或代码块。使用try-catch,系统同样会抛出异常,但是开发人员能够通过程序捕捉异常并自定义输出异常。同样,它也可以接受从System.Exception派生的对象传递过来的参数,示例代码如下所示。
+展开
-C#
            int x = 1;//声明整型变量
            int y = 0;//声明整型变量
            try//尝试处理代码块
            {
                x = x / y;//进行除法计算
            }
            catch(Exception ee)//使用Exception对象
            {
                Console.WriteLine("除数不能为空,具体错误信息如下所示\n");//输出错误信息
                Console.WriteLine(ee.ToString()); //捕获代码
            }

运行结果如图2-26所示。

try-catch语句使用示例

图2-26 try-catch语句使用示例
  在运行结果中,程序详细的输出了异常的信息,此错误的信息由程序捕捉,并不会停止应用程序。

  注意:try-catch能够捕捉应用程序中的错误信息,但是try-catch会对程序的性能造成影响,在程序开发当中,应避免不必要的try-catch语句的出现。

2.7.3 try-finally异常语句
  catch用于处理应用程序语句中出现的异常,而finally语句用于清除try块中分配的任何资源,以及运行应用程序中任何发生异常也必须执行的代码。finally语句经常和catch语句搭配使用,示例代码如下所示。
+展开
-C#
            int x = 1;//声明整型变量x
            int y = 0;//声明整型变量y
            try//尝试处理代码块
            {
                x = x / y;//进行除法计算
            }
            finally//继续执行程序块
            {
                Console.WriteLine("系统已自动停止");//依旧输出错误信息
            }

  上述代码试图用一个整型变量除以一个值为0的整型变量,当异常发生时,系统会抛出异常,但是finally语句也被执行。

2.7.4 try-catch-finally异常语句
  try-catch-final语句能够使应用程序更加健壮。try-finally语句依旧会抛出异常,而try-catch-finally语句能够捕获异常并执行finally语句中的控制语句,try-catch-finally语句结构和很灵活,示例代码如下所示。
+展开
-C#
            int x = 1;//声明整型变量x
            int y = 0;//声明整型变量y
            try //尝试处理代码块
            {
                x = x / y;//进行除法计算
            }
            catch (Exception ee)//捕获异常信息
            {
                Console.WriteLine("除数不能为空,具体错误信息如下所示");//抛出异常
                Console.WriteLine(ee.ToString());//输出异常信息
            }
            finally//继续执行程序块
            {
                Console.WriteLine("系统已自动停止");//继续执行程序
            }

  上述代码试图用一个整型变量除以一个值为0的整型变量,当异常发生时,catch捕获并抛出异常,捕获异常后,finally语句也被执行。运行结果如图2-27所示。

try-catch语句使用示例

图2-27 try-catch-finally语句运行示例

加支付宝好友偷能量挖...


评论(0)网络
阅读(104)喜欢(0)Asp.Net/C#/WCF