7.1C#错误类型
一、类型:
1.语法错误
2.运行时错误
3.逻辑错误
二、具体讲解:
1.语法错误: 代码不符合C#语言的语句
2.运行时错误: 在程序运行时出现的错误,也就是异常,例如:数组下标越界,打开的文件不存在等
3.逻辑错误: 程序没有实现编程人员的设计意图和功能,这类程序可以运行,但结果不符合预期,一般是算法考虑不周到造成的,但也有粗心的原因
7.2异常处理
1.异常和异常处理:
异常指的是编程人员在程序编写过程中对可能发生的错误和异常预先采取的处理措施,异常处理可以避免一些严重的后果
2.异常类:
异常通常是由应用程序(用户程序等)或运行库(公共语言运行库和应用程序运行库)引发的。因此,.NET提供了大量与异常有关的类,用来处理异常,如:Exception类,当发生异常的时候,系统或者当前正在执行的应用程序会通过引发包含关于该错误的信息的异常来报告异常。异常发生后,将由该应用程序或者默认异常处理程序来处理,异常继承类关系如下:
有些异常会自动引发,下面介绍了常用的异常:
通常的异常类继承于Exception类,主要有两种类型异常类:
(1)ApplicationException:用户定义的应用程序异常类型的基类,继承于Exception类
(2)SystemException:系统异常类,通常是致命的,不可恢复的错误直接继承于System.SystemException类
SystemException类常用的属性和方法如下:
7.3异常处理过程
1.try-catch语句:
try-catch语句是C#提供的异常处理语句,语法如下:
try
{
可能出现异常的语句序列;
}
catch(异常类型 异常对象)
{
对可能出现的异常进行处理;
}
例如:
try
{
int x=int.Parse(Console.ReadLine());//输入整数
int y=20;
int z=y/x;
}
catch(Exception e)
{
Console.WriteLine(e.message);//输出错误
}
Console.ReadKey();
2.try-catch-finally语句:
try
{
可能出现的异常的语句序列;
}
catch(异常类型 异常对象)
{
对可能的异常进行处理;
}
finally
{
最后要执行的代码;
}
3.throw语句:
可以手动引发异常,并且可以自定义
throw 异常对象
举例:(这里是多次抛出异常)
static void FunA()
{
throw new ArgumentException("This is exception in FunA");
}
static void FunB()
{
try
{
FunA();
}
catch(Exception e)
{
throw;
}
}
//Main方法部分:
try
{
FunB();
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}//输出异常信息
4.自定义异常类:
当系统的异常类不能和程序的异常类相匹配时,需要自定义异常类,语法如下:
class 自定义异常类名:异常变量名
{
语句块;
}
一般需要定义3个构造函数,一个是默认构造函数,一个用来设置Message属性和innerException属性
注意:
尽可能引起具体的异常,而不是该异常的基类型
练习:尝试编写一个程序,显示除数不能为0的异常信息