2023-08-11
自我提升
0

目录

异常:
异常处理(捕捉异常)

我们上⾯讨论了再开发过程中如何查找和修正错误,使这些错误不会再发布的代码中出 现,但有时,我们知道可能会有错误发⽣,但不能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
块可以同时存在

每个代码块的⽤法

  • try块包含了可能出现异常的代码(⼀条或者多条语句)
  • catch块⽤来捕捉异常,当代码发⽣异常,那么异常的类型和catch块中的类型⼀样的时
  • 候,就会执⾏该catch块,如果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);