异常是在程序执行期间出现的问题。C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零。
异常提供了一种把程序控制权从某个部分转移到另一个部分的方式。C# 异常处理时建立在四个关键词之上的:try、catch、finally 和 throw。
- try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。
- catch:程序通过异常处理程序捕获异常。catch 关键字表示异常的捕获。
- finally:finally 块用于执行给定的语句,不管异常是否被抛出都会执行。例如,如果您打开一个文件,不管是否出现异常文件都要被关闭。
- throw:当问题出现时,程序抛出一个异常。使用 throw 关键字来完成。
(一):异常的编程的三种结构
1:捕获异常(try_catch)
try {
Console.WriteLine("请输入分母:");
int n = Convert.ToInt32(Console.ReadLine());
double result = 100 / n;
Console.WriteLine("结果为:" + result);
}catch(DivideByZeroException){ // 输入0
Console.WriteLine("分母不能为0");
}catch(FormatException){ // 格式异常
Console.WriteLine("格式错误");
}
这里需要说明一下:catch是可以没有参数的,没有参数就是捕获一切异常。
如果需要知道是因为什么错误导致的异常,就需要带参数。
2:收尾工作(try_catc_finally)
try
{
Console.WriteLine("请输入分母:");
int n = Convert.ToInt32(Console.ReadLine());
double result = 100 / n;
Console.WriteLine("结果为:" + result);
}
catch (DivideByZeroException)
{ // 输入0
Console.WriteLine("分母不能为0");
}
catch (FormatException)
{ // 格式异常
Console.WriteLine("格式错误");
}
finally { // 无论是否发生异常,都会走进这里。
Console.WriteLine("我是finally模块");
}
3:抛出异常(throw)
try
{
Console.WriteLine("请输入分母:");
int n = Convert.ToInt32(Console.ReadLine());
if( n > 10){
// 手动抛出异常
throw new IndexOutOfRangeException();
}
double result = 100 / n;
Console.WriteLine("结果为:" + result);
}catch(IndexOutOfRangeException e){
// 接收手动抛出的异常,并显示
//Console.WriteLine("你输入的整数超出了范围");
Console.WriteLine(e.Message); // 显示出错信息
Console.WriteLine(e.StackTrace); // 显示出错位置
}
catch (DivideByZeroException e)
{ // 输入0
Console.WriteLine("分母不能为0");
}
catch (FormatException e)
{ // 格式异常
Console.WriteLine("格式错误");
}
finally { // 无论是否发生异常,都会走进这里。
Console.WriteLine("我是finally模块");
}
(二):.NET中的异常类
这部分请百度搜索MSDN。
(三):异常类的属性
Console.WriteLine(e.Message); // 显示出错信息
Console.WriteLine(e.StackTrace); // 显示出错位置
等等……
(四):自定义异常
// 自定义异常
class NegativeNumberExeption : ApplicationException
{
// 默认输出
public NegativeNumberExeption() : base("自定义异常:非法操作"){}//对基类构造函数的赋值
// 有参数输出
public NegativeNumberExeption(string message) : base(message){}
}
有好的建议,请在下方输入你的评论。
欢迎访问个人博客
https://guanchao.site
欢迎访问小程序: