黑马程序员----C#中的流程控制语句之异常处理语句

来源:互联网 发布:linux系统挂载光盘 编辑:程序博客网 时间:2024/06/06 10:56


----------------------  ASP.Net+Android+IO开发S 、  .Net培训、期待与您交流! ----------------------


(一),try-catch语句

                 C#语言提供了利用try-catch捕捉异常的方法,在try块中的任何语句产生异常,都会执行catch块中的语句来处理异常。

                语法:

                     try

                    {

                            语句序列

                    }

                    catch(异常类型 标示符)

                   {

                            异常处理

                   }

               执行过程:如果try中的代码没有出错,则程序就正常运行try中的代码,不会执行catch中的代码;如果try中的代码一旦出错,程序就立即跳入catch中去执行代码,那么try中出错代码之后的代码就没机会再执行了。

              例如:

 

static void Main(string[] args)        {            Console.WriteLine("请输入一个整数:");            string str = Console.ReadLine();            try            {//把有可能出错的代码写在try中                int number = Convert.ToInt32(str);                Console.WriteLine("您刚刚输入的数字是{0}", number);            }            catch            {//出错了就立即跳进来执行catch中的代码                Console.WriteLine("您刚刚输入的不是数字!");            }            Console.ReadKey();        }

      

(二),try-catch-finally语句

                如果try后有finally块,不论是否出现异常,也不论是否有catch块,finally块总是会执行的,即使在try内使用跳转语句或return语句也不能避免finally块的执行。

               语法:

                    try

                     {

                              语句序列

                     }

                              catch(异常类型 标示符)

                    {

                              异常处理

                    }

                     finally

                   {

                               语句 序列

                   }

              注意finally块中做的是释放资源的操作,如关闭打开的文件等。

(三),throw语句

         有时候在方法中出现了异常,不一定立即把它显示出来,而是想把这个异常抛出并让调用这个方法的程序进行捕捉和处理。所以这是我们就可以使用throw语句。

                 语法:

                     Throw[表达式];

                 注意:表达式的类型必须是System.Exception类或从System.Exception类继承的类的类型。Throw也可以不带表达式,但只能用在catch中。

                 例如:

 

static void Main(string[] args)        {            try            {                Method1();            }            catch(Exception er)            {//立即抓住Method1抛出的异常                Console.WriteLine("Main方法捕获到:"+er.Message);            }                        Console.ReadKey();        }        static void Method1()        {            try            {                Method2();            }            catch(Exception er)            {//立即抓住Method2抛出的异常                Console.WriteLine("Method1中捕获到"+er.Message);                //重新抛出当前正在由catch块处理的异常er                throw;            }        }        static void Method2()        {            //Method2抛出新的异常            throw new Exception("Method2中抛出的异常");        }



----------------------  ASP.Net+Android+IO开发S 、  .Net培训、期待与您交流! ----------------------

原创粉丝点击