我们上⾯讨论了再开发过程中如何查找和修正错误,使这些错误不会再发布的代码中出 现,但有时,我们知道可能会有错误发⽣,但不能100%的肯定他们不会发⽣,此时最好 能预料到错误的发⽣,编写⾜够健壮的代码以处理这些错误,⽽不必中断程序的执⾏。
错误处理就是⽤于这个⽬的。下⾯学习异常和处理他们的⽅式。
异常是在运⾏期间代码中产⽣的错误。
⽰例:
c# int[] myArray = {1,2,3,4};
int myEle = myArray[4];//数组下标越界
运⾏到这⾥的时候,会出现异常,这个异常的定义已经在CLR中定义好了。
如果我们不去处理这个异常,那么当异常发⽣的时候,程序会终⽌掉,然后异常后⾯的代码都⽆法执⾏。
try ... catch ... finally 语句
我们处理异常的语法结构如下(包含了三个关键字 try catch finally)
c#try{
...
}
catch( <exceptionType> e ){
...
}
finally{
}
其中catch块可以有0或者多个,finally可以有0或者1个
但是如果没有catch块,必须有finally块,没有finally块,必须有catch块,catch块和finally
块可以同时存在
每个代码块的⽤法
编程题:
1、处理刚刚的下标越界异常。
c# int[] myArr = { 1, 2, 3, 4 };
try
{
int temp = myArr[4];
}
catch
{
//出现这个异常的时候,怎么处理
Console.WriteLine("出现了数组下标越界的异常");
}
finally
{
Console.WriteLine("不管是否出现异常,都会执行");
}
Console.Write("23");
2、让⽤户输⼊两个数字,⽤户可能会出⼊⾮数字类型,处理该异常,如果出现该异常就 让⽤户重新输⼊,输出这两个数字的和
c#Console.WriteLine("请输入两个数字,每行一个");
int n1 = 0, n2 = 0;
while (true)
{
try
{
n1 = Convert.ToInt32(Console.ReadLine());
n2 = Convert.ToInt32(Console.ReadLine());
break;
}
catch (FormatException e)
{
Console.WriteLine("你输入的数据,不符合规则,请重新输入");
}
}
Console.WriteLine(n1 + n2);