C#实训Day014:C#方法的调试中的异常处理语句

2025-10-19 00:20:06

在C#程序中,异常时运行期间发生的错误,未处理的异常会使应用程序终止,这时可以使用异常处理语句来捕获和处理异常。通常使用的异常处理语句有throw语句、try.....catch语句和try.....catch.....finally语句,通过这些语句可以对可能产生异常的程序代码进行监控。

C#实训Day014:C#方法的调试中的异常处理语句

工具/原料

C#

方法/步骤

1.使用throw语句抛出异常

throw语句用于主动引发一个异常,在特定的情况下自动抛出异常。

throw语句的基本格式:

throw  Object  (Object:所要抛出的异常对象)

这个异常对象是派生自Sytem.Exception类的对象,下面这个代码从执行上是没有问题的,但是在逻辑上的不对的,b=0是没有意义的。

C#实训Day014:C#方法的调试中的异常处理语句

那么我们如何防止用户输入将b=0时自动抛出异常呢,那么我们就要在代码中添加一段throw语句,让其主动引发异常,抛出异常状况。

DivideByZeroException:尝试将整数或 Decimal 值除以零时引发的异常。

 static void Main(string[] args)

            {

                Console.WriteLine("SUM1: " + MyInt(4, 2));

                Console.WriteLine("SUM2: " + MyInt(4, 0));

                Console.ReadKey();

            }

            public static int MyInt(int a, int b)

            {

                int num;

                if (b == 0)

                {

         throw new DivideByZeroException();   // 抛出DivideByZeroException类的异常

         return 0;

                }

                else

                {

                    num = a / b;

                    return num;

                }

C#实训Day014:C#方法的调试中的异常处理语句

这时当我们再次执行代码时,第二个输出就应该会弹出异常提示了,而且提示我们错误出现在什么位置。

C#实训Day014:C#方法的调试中的异常处理语句

2. 使用try.....catch语句捕捉异常

try.....catch语句允许在try后面的大括号{}中放置可能发生异常的程序代码,并对这些程序代码进行监控,而catch后面的大括号{}中则放置处理错误的程序代码,以处理程序发生的异常。

try.....catch语句的基本格式:

try  

{  

    被监控的代码;  //可能包含异常的执行过程

}  

catch(异常类名,异常变量名)  //Exception 捕获异常

{  

     异常处理;  

}  

C#实训Day014:C#方法的调试中的异常处理语句

当我们在程序中输入一个分数值值,程序会正常执行代码,当我们在程序中输入字符串时,程序就会为我们检测到错误,然后输出catch中的语句

C#实训Day014:C#方法的调试中的异常处理语句

3.使用try.....catch.....finally语句捕捉异常

将finally语句与try......catch语句结合可以形成try......catch......finally语句,finally语句同样以区块的形式存在,它被放在所有try....catch语句的最后面,程序执行完毕,最后都会调到finally语句区块,执行其中的代码。

try.....catch......finally语句的基本格式:

try  

{  

    被监控的代码;  //可能包含异常的执行过程

}  

catch(异常类名,异常变量名)  //Exception 捕获异常

{  

     异常处理;  

}  

finally

{

程序代码;   //最终会做甚么

}

C#实训Day014:C#方法的调试中的异常处理语句

注意:

 1)try....catch语句可以包含多个catch语句,但程序只执行一个catch语句中的信息,其他的catch语句被忽略了。

 2)在catch语句中,异常类名必须为System.Exception或从System.Exception派生的类型。当catch语句指定了异常类名和异常变量名后,就相当于声明了一个具有给定名称和类型的异常变量,此异常变量表示当前正在处理的异常。

还是上面的例子,这里通过try...catch...finally语句来捕捉整数除零错误

 static void Main(string[] args)

            {

                Console.WriteLine("SUM1: " + MyInt(4, 2));

                Console.WriteLine("SUM2: " + MyInt(4, 0));

                Console.ReadKey();

            }

            public static int MyInt(int a, int b)

            {

                int num;

                try                            //try...catch语句

                    {

                        num = a / b;            //除0引发错误

                        return num;

                    }

                    catch (Exception err)

                    {

                        Console.WriteLine("{0}", err.Message); //显示错误信息

                        throw;

                    }

                    finally

                    {

                        num = a / b;                     

                    }        

            }

C#实训Day014:C#方法的调试中的异常处理语句

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢