博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[C#] C# 知识回顾 - 异常介绍
阅读量:4843 次
发布时间:2019-06-11

本文共 1853 字,大约阅读时间需要 6 分钟。

异常介绍

  我们平时在写代码或程序时,无意中(一般就是技术不够),而导致程序运行时出现意外(又称为异常),对于这个问题, C# 有专门的异常处理程序(当然其他语言也有)。

  异常处理所涉及到的关键字有几个,不用说都知道,已经耳熟能详了:trycatch 和 finally 等,用来处理失败的情况。当然,尽管这些操作也有可能失败,一般来说是释放,清理某些资源或记录日志等。

  哪些代码会出现异常呢:使用的基类库 BCL、第三方类库和我们写的自以为是的代码,还有,可以使用 throw 显式抛出异常。

 

  一种普遍出现的情形,异常很可能不是由代码直接引发,而是由调用堆栈中更靠下的位置其它方法所引发。在这种情形下下,CLR 会展开堆栈,并查找是否有包含针对你指定异常类型的 catch 块的代码,如果找到的话,就会执行最先匹配的 catch 块。 如果在调用堆栈中的任意位置中,异常处理程序都没有找到合适(你写的)的 catch 块,就会自动终止该进程,并向用户显示(抛出)一条错误的信息。

  在这里我写了一个被 0 处会出现异常(会显式引发 DivideByZeroException 异常)的示例;如果在执行的途中出现异常,则捕获该异常。

1         ///  2         /// 除法 3         ///  4         ///  5         ///  6         /// 
7 static double Division(double x, double y) 8 { 9 if (y == 0)10 {11 throw new DivideByZeroException();12 }13 14 return x / y;15 }16 17 static void Main(string[] args)18 {19 //假设20 double x = 250, y = 0;21 22 try23 {24 var result = Division(x, y);25 Console.WriteLine($"result: {result}");26 }27 catch (DivideByZeroException e)28 {29 30 Console.WriteLine(e);31 }32 33 Console.Read();34 }

 

Excetion 特点

  • 所有异常类型都由基类 Exception 派生。

  • 使用 try 块包围你认为可能会出现异常的代码。

  • 一旦 try 块中发生异常,控制流将按顺序找到与之关联的 catch,如果一直没有找到关联的,会引发最终的异常基类 Exception 内的处理程序(前提你已经 catch)。

  • 如果出现异常却没有对应的异常处理程序,则该程序将会停止执行,并抛出对应错误的信息。

  • 在 catch 定义了的异常变量,可以获取对应异常类型的有关信息,比如调用堆栈的状态和错误的说明,具体看 Excetion 的属性。

  • throw 关键字可以显式引发异常。

  • 即使出现异常也会执行 finally 块中的代码。 一般来说,我们会使用 finally 块释放资源。例如,关闭xx流。

 

C# 基础回顾系列 

  《》

  《》

  《 》、《 》

  《》、《》

  《》、《》

  《》

  《》

 
 

【博主】反骨仔 

【出处】 

【参考】https://docs.microsoft.com/zh-cn/dotnet/articles/csharp/programming-guide/exceptions/

【参考】微软官方文档

转载于:https://www.cnblogs.com/liqingwen/p/6193354.html

你可能感兴趣的文章
Python OOP(面向对象编程)
查看>>
MySQL安装与测试
查看>>
使用JDK自带的VisualVM进行Java程序的性能分析
查看>>
mysql语句记录
查看>>
总结面试题
查看>>
Win8AX博客园应用隐私声明
查看>>
windows中的软链接硬链接等
查看>>
如何在本地调试微信接口
查看>>
Java二分法
查看>>
杭电acm2099
查看>>
Linux GCC常用命令
查看>>
拷贝变换3字节像素到4字节内存
查看>>
PythonDay01
查看>>
Oracle数据库的JDBC衔接
查看>>
运用 KCheckGmail 监视 Gmail
查看>>
asp.net core mvc 读取appsettings.config中文乱码问题
查看>>
asp.net 的log4net的helper类
查看>>
shell编程
查看>>
2018上IEC计算机高级语言(C)作业 第1次作业
查看>>
hdu 1753
查看>>