我们上⾯讨论了再开发过程中如何查找和修正错误,使这些错误不会再发布的代码中出 现,但有时,我们知道可能会有错误发⽣,但不能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);
本文作者:千纸鹤
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!