C#学习入门(四)—— 异常和异常的处理

1. 异常

1.1 错误

 在程序设计和运行中,不可避免的会出现各种各样的错误,为了减少设计程序中的错误,一般采用两种解决方案:
(1)在程序设计阶段,使用调试程序找出程序中的错误并改正。
(2)在程序中加入异常处理的语句,从而使得程序具有容错功能。

1.2 错误的分类

程序的错误分为以下3种:
(1)语法错误。如果使用了错误的语法、函数、类和结构,在编译时程序就无法生成运行代码
(2)运行时错误。运行时发生的错误,称为异常。它分为:不可预料的逻辑错误和可以预料的逻辑错误。
(3)逻辑错误。逻辑错误是设计者在思考问题过程中造成的错误。

1.3 异常

 异常就是程序执行期间发生的错误或者意外。
例如:

int[] Array = { 1, 2, 3, 4, 5 };
Console.WriteLine(Array[5]);

 数组下表的越界,Array[5]已经超过了数组的范围,调用时会出现异常。而实际上程序是编译通过的,但是却在运行时出现错误,这就是异常。
在这里插入图片描述

 如果该程序没有异常处理程序,则程序将停止执行,并显示一条错误信息,因此对程序中的异常处理是非常重要的。


 一般情况下,在一个比较完整的程序中,要尽量考虑可能出现的各种异常,这样当发生异常时,控制流将立即跳转到关联的异常处理程序(如果存在)。 如果不进行异常处理,即不对错误做出响应,程序的健壮性就会大打折扣,甚至无法保证正常运行,所以必须要进行异常处理。

2. 异常处理

 异常处理是为了防止未知错误而采取的措施,在异常发生的时候,转到一个位置尝试去处理错误,减少错误带来的损失,并且能够使程序继续运行下去。

2.1 .NET的异常类

 .NET框架的类库中提供了许多已经定义好的异常类。分为两大类异常:System.SystemException(系统异常)和System.ApplicationException(应用异常)。
在这里插入图片描述

2.2 C#的常用异常类

C#的常用异常类均包含在System命名空间中。
在这里插入图片描述

2.3 C#异常处理

在C#中用于异常处理的语句有:
(1)try catch语句
(2)try catch finally语句
(3)throw语句

2.3.1 try catch语句

代码:

string str = "2019年";      
try
{
    int year = int.Parse(str);  //把字符串转换成整型
    Console.WriteLine(year);
}
catch(Exception e)	//发生异常后处理程序段
{
    Console.WriteLine(e.Message);
}

运行结果:
在这里插入图片描述
当try块中的语句在执行过程中出现异常时,公共语言运行时(CLR)查找处理此异常的catch语句,然后跳转到相应的catch块中。

2.3.2 try catch finally语句

代码:

string str = "2010年";      
try
{
    int year = int.Parse(str);  //把字符串转换成整型
    Console.WriteLine(year);
}
catch(Exception e)
{
    Console.WriteLine(e.Message);
}
finally
{
    Console.WriteLine("执行finally");
}

运行结果:
在这里插入图片描述
加入finally,则不论是否发生异常,都会执行finally中的语句。

2.3.3 throw语句

代码:

static int[] array = { 1, 2, 3, 4, 5 };
static void Main(string[] args)
{
    try
    {
         GetArray(6);
         Div(3,0);
    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
    }
}
static  int GetArray(int index)
{
    if (index >= 5)
        throw new Exception("数组越界!!!");
    return array[index];
}

static int Div(int a,int b)
{
    return a / b;
}

运行结果:
在这里插入图片描述
throw 表达式;——抛出异常,但是表达式System.Exception或从System.Exception派生出的类的实例。

3. 总结

 在编写程序的过程中,不可避免的出现各种错误,语法的错误通过编译器可以轻松地解决。
 逻辑的错误,看个人的思维,有时候会卡很久,需要花时间来解决。
 而运行时的错误,也就是异常,需要我们通过异常处理来解决,这样才能够使代码能加流畅,而且避免这些异常所带来的问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暗夜无风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值