C#实训Day014:C#方法的调试中的异常处理语句
在C#程序中,异常时运行期间发生的错误,未处理的异常会使应用程序终止,这时可以使用异常处理语句来捕获和处理异常。通常使用的异常处理语句有throw语句、try.....catch语句和try.....catch.....finally语句,通过这些语句可以对可能产生异常的程序代码进行监控。
工具/原料
C#
方法/步骤
1.使用throw语句抛出异常
throw语句用于主动引发一个异常,在特定的情况下自动抛出异常。
throw语句的基本格式:
throw Object (Object:所要抛出的异常对象)
这个异常对象是派生自Sytem.Exception类的对象,下面这个代码从执行上是没有问题的,但是在逻辑上的不对的,b=0是没有意义的。
那么我们如何防止用户输入将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;
}
这时当我们再次执行代码时,第二个输出就应该会弹出异常提示了,而且提示我们错误出现在什么位置。
2. 使用try.....catch语句捕捉异常
try.....catch语句允许在try后面的大括号{}中放置可能发生异常的程序代码,并对这些程序代码进行监控,而catch后面的大括号{}中则放置处理错误的程序代码,以处理程序发生的异常。
try.....catch语句的基本格式:
try
{
被监控的代码; //可能包含异常的执行过程
}
catch(异常类名,异常变量名) //Exception 捕获异常
{
异常处理;
}
当我们在程序中输入一个分数值值,程序会正常执行代码,当我们在程序中输入字符串时,程序就会为我们检测到错误,然后输出catch中的语句
3.使用try.....catch.....finally语句捕捉异常
将finally语句与try......catch语句结合可以形成try......catch......finally语句,finally语句同样以区块的形式存在,它被放在所有try....catch语句的最后面,程序执行完毕,最后都会调到finally语句区块,执行其中的代码。
try.....catch......finally语句的基本格式:
try
{
被监控的代码; //可能包含异常的执行过程
}
catch(异常类名,异常变量名) //Exception 捕获异常
{
异常处理;
}
finally
{
程序代码; //最终会做甚么
}
注意:
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;
}
}