异常

72 阅读2分钟

异常

  • 异常:异常是在运行期间代码中产生的错误。

示例:
int[myArray ={1,2,3,4};
int myEle=my Array[4];/数组下标越界
运行到这里的时候,会出现异常,这个异常的定义已经在CLR中定义好了。如果我们不去
处理这个异常,那么当异常发生的时候,程序会终止掉,然后异常后面的代码都无法执
行。

开发环境 :用户未时候阶段
生产环境:写完代码之后,已经在软件上运行了状态,用户使用阶段

try-catch-finally

catch块用来捕捉异常,当代码发生异常,那么异常的类型和catch块中的类型一样的时候,就会执行该catch块,如果catch块的参数不写,表示发生任何异常都执行这个catch块

finally块包含了始终会执行的代码,不管有没有异常产生都会执行

int[] myArr = { 1, 2, 3, 4, 5 };
try
{
    int temp = myArr[5];
}catch(IndexOutOfRangeException e) 
{
    Console.WriteLine("出现了数组下标越界的异常"); //这样即使在生产环境时候,用户体验出现了异常也不会导致程序崩溃

}
catch(Exception e)
{
    Console.WriteLine("出现了异常");//出现异常时候怎么处理
}
finally
{
    Console.WriteLine("不管是否出现异常,都会执行");
}

比如在与数据库连接时候,会因为各种原因导致异常,catch捕捉类似网络,地址错误等等,finally用来关闭连接数据库时候用的资源

编程题

让用户输入两个数字,用户可能会出入非数字类型,处理该异常,如果出现该异常就
让用户重新输入,输出这两个数字的和

Console.WriteLine("请输入两个数字,每行一个");

int n1 = 0, n2 = 0;
while (true)
{
    try
    {
        n1 = Convert.ToInt32(Console.ReadLine());//Console.ReadLine是读取一行数据
        n2 = Convert.ToInt32(Console.ReadLine());
        break;
    }
    catch (FormatException)
    {
        Console.WriteLine("你输入的数据,不符合规则,请重新输入");
    }
}
Console.WriteLine(n1 + n2);

总结:通过while循环可以不断检测是否输入非法格式,如果输入正确格式,则跳出循环