分享

C# 中的异常捕捉(try)和异常处理(catch)

 雪柳花明 2016-10-25

 为了捕捉异常,代码要放到一个 try 块中(try 是 C# 关键字)。代码运行时它会尝试执行 try 块内的所有语句。如果没有任何语句产生一个异常,这些语句将一个接一个运行,直到全部完成。然而,一旦出现异常,就会跳出 try 块,并进入一个 catch 处理程序中执行。

        在try块后紧接着写一个或多个 catch 处理程序(catch 也是 C# 关键字),用它们处理任何发生的错误。每个 catch 处理程序都负责捕捉并处理一种特定类型的异常,你可以在一个 try 块后面写多个 catch 处理程序。try 块中的任何一个语句造成错误,“运行时”(runtime)都会生成并抛出一个异常。然后“运行时”将检查 try 块之后的 catch 处理程序,将控制权移交给一个匹配的处理程序。

        catch 处理程序结束之后,程序将从处理程序之后的第一个语句继续执行

下图是使用了 try 和 catch 的一个程序:

[csharp] view plain copy
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5.   
  6. namespace TryAndCatch  
  7. {  
  8.     class Program  
  9.     {  
  10.         static void Main(string[] args)  
  11.         {  
  12.             try  
  13.             {  
  14.                 int a;  
  15.                 string b;  
  16.   
  17.                 Console.WriteLine("请输入一个整数: ");  
  18.                 b = Console.ReadLine(); // ReadLine() 获取到的是 string 类型的数据  
  19.                 a = int.Parse(b);       // int.Parse 方法将 string 类型转换 int 类型  
  20.             }  
  21.   
  22.             catch (Exception ex)    // 这是一个常规的 catch 处理程序,能捕捉一切异常  
  23.             {  
  24.                 Console.WriteLine(ex);  
  25.             }  
  26.         }  
  27.     }  
  28. }  

        由于 a 是 int 类型,所以要求输入的数据也要是 int 类型。此处输入 1.0,类型不符合,所以 try 块在此处会捕捉到一个 FornatException ( 格式异常 ),然后 catch 块会处理这个异常,在这里具体的做法就是输出错误信息。

         FornatException 属于 Exception。

运行后结果如下图所示:


将 try 和 catch 注释掉后代码如下:

[csharp] view plain copy
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5.   
  6. namespace TryAndCatch  
  7. {  
  8.     class Program  
  9.     {  
  10.         static void Main(string[] args)  
  11.         {  
  12.             ////try  
  13.             ////{  
  14.                 int a;  
  15.                 string b;  
  16.   
  17.                 Console.WriteLine("请输入一个整数: ");  
  18.                 b = Console.ReadLine();  
  19.                 a = int.Parse(b);  
  20.             ////}  
  21.   
  22.             ////catch (Exception ex)  
  23.             ////{  
  24.             ////    Console.WriteLine(ex);  
  25.             ////}  
  26.         }  
  27.     }  
  28. }  

由于没有进行异常捕捉和异常处理,所以运行后结果如下:


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多