当前位置:首页 > Windows程序 > 正文

错误和异常的总结

2021-03-27 Windows程序

错误和异常的总结

因为总结吗,,可能概念啥的比较多,大家要学着适应.

首先是C#中的异常用老处理系统级和用户级的错误状态,是一种结构化,统一的类型安全的处理机制.

因为鄙人开始想走C++的道路,所以搞过一段时间的C++,感觉C#还是和C++的异常处理有点区别的.

1.在C#,所有的异常必须由Exception派生的类类型的实例来表示.C++,可以使用任何类型的任何值表示异常.

2.在C#,利用finally块可编写正常执行和异常情况下都将执行的终止代码.C++,很难在不重复代码的情况下编写这样的代码.

3.C#,系统级的异常如溢出啊,被零除无意义等都对应的定义预期匹配的异常类,并且与应用程序级的错误状态处于同等地位.

(如果你不了解C++,,如果你不了解C++,没关系,去学!学完了就会了)

导致异常的原因:(两种情况可能导致异常)

第一种:throw语句用于利己无条件的引发一场.控制永远不会执行throw后面的语句(如果你使用VS高点的版本,就会发现,如果再throw后面写点东西就会报错).

第二种:在执行C#语句和表达式的过程中,有时会出现一些例外情况,使某些操作无法完成,此时就会引发一些异常.例如,在整数触发运算中,如果分母为0,则会引发一个异常(你自己编写一个案例试试).

下面说一下所以的异常类的父类:Exception

Exception具有一些所有异常共享的值得注意的属性:

Message属性是string类型的一个只读属性,它包含关于所发生异常的原因的秒数(还记得,我在编写自定义异常类的时候怎么对待message?).

InnerException属性是Exception类型的一个只读属性.如果它的值不是null,则它所引用的是导致了当前一场的那个异常,即表示当前异常是在处理那个InnerExceptioncatch块中被引发的.否则,它的值为null,则表示该异常不是由另一个异常引发的.以这种方式连接在一起的异常对象的数目可以是任意的.

这两个属性的值可以在调用Exception的实例构造函数时指定.

异常的处理方式

首先,先介绍一个概念:异常传播。当一个异常被抛出时,程序将控制权转移给try语句中的第一个能处理该异常的catch语句。这种从异常抛出到转移给合适的异常处理语句的过程就是异常传播。

异常传播包括重复执行以下步骤,直到找到一个与该异常相匹配的catch句子。

1)由里层到外层的执行每一个包围抛出点的try语句

如果try包含一条或多条catch子句,那么将按照这些子句出现的顺序对它们逐一检查以定位适合该异常的处理。所谓适合该异常的处理,就是第一个定义了该异常类型或者其基类型的catch子句,一般catch子句可以匹配任何类型的异常,一旦找到与该类型匹配的catch子句,异常传播也就结束了,程序控制转移到该catch子句执行。

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/68618.html