第11章 程序错误与异常处理
第05章 异常处理

5.5 自定义异常类
例5.6 自定义异常类.
class OverflowException extends Exception //自定义异常类 { public void printMsg() { System.out.println("exception: "+this.getMessage()); this.printStackTrace(); System.exit(0); } } public class Try7 { public void calc(byte k) throws OverflowException //抛出异常
5.1.1 错误与异常
致命性的错误:如果程序进入了死循环,或递归无法 结束,或内存溢出,这些现象称为错误 错误.错误只能在 错误 编程阶段解决,运行时程序本身无法解决,只能依靠 其它程序干预,否则会一直处于非正常状态. 非致命性的异常:如果运算时除数为0,或操作数超出 0 数据范围,或打开一个文件时发现文件不存在,或欲 装入的类文件丢失,或网络连接中断等,这些现象称 为异常 异常.在源程序中加入异常处理代码,当程序运行 异常 中出现异常时,由异常处理代码调整程序运行方向, 使程序仍可继续运行直至正常结束.
《Java2程序设计实用教程》叶核亚
1.异常的产生
例5.1 产生数组下标越界异常和除数为0异常.
public class Try1 { public static void main (String args[]) { int i=0; int a[] = {5,6,7,8}; for(i=0;i<5;i++) System.out.println(" a["+i+"]="+a[i]); System.out.print("3/0="+(3/0)); } }
丰田模式(上)11章节

斯·史克菲德是丰田汽车公司在美国肯塔基州乔治城设立第一 座美国动力传输系统工厂时的副总裁,他在通用汽车公司服务 了几十年了,在制造业界以能够顺利完成工作,并和员工相处融洽 闻名。史克菲德非常兴奋为丰田所聘用,得以闻名遐迩的丰田生产 制度原则建立一座全新的汽车制造厂时,他夜以继日地努力使这座 新工厂能符合丰田的高标准,以使他的日本藉「教师」感到满意, 包括当时担任肯塔基州丰田汽车公司总裁的张富士夫。 史克菲德过去学到的汽车引擎制造业黄金原则是:不能让组装 停摆!在通用汽车公司,经理人的绩效评量标准是看他们达成的数 字,不论如何,就是要完成工作、达成目标数字,亦即把引擎送往 组装线,维持组装线的持续作业,若制造出太多引擎,没有关系,
7
8
7到10分钟,依此类推,因此,极少发生整座工厂停摆的情 形。换句话说,丰田在不牺牲生产的前提下,达到了安灯的目 的。美国的汽车制造商经过了多年才了解如何应用丰田生产制度中 的这项工具,这或许是作业员和监工如此不愿停止生产线的原因, 因为许多制造业者在仿效此工具时,真的把整条生产线给停止了! 对丰田公司而言,在推出「凌志」车款时,为了符合车主的极 高期望水准,自动化的内建品质控管变得前所未见地重要。直到不 久前,「凌志」车款只在日本制造,众所周知,日本的品管文化与 制度是世界一流水准,但是,在北美地区制造的「凌志」仍然能维 持顾客所期望的超高品质水准吗?答案是肯定的,丰田在加拿大安 大略省剑桥的工厂就做到了这点。为追求完美而使用的许多创新中, 一些技术与流程把安灯制度推向更高层次。 加拿大丰田汽车公司总裁雷伊·谭奎知道,从制造丰田「可罗 拉」与「矩阵」车款转变为制造「凌志RX 330」车款,品质的门 槛显著提高,因此,在新的「凌志」车款生产线上,不论是人员、
第13章_异常处理

第 13 章 异 常 处 理
C + + 语 言 程 序 设 计 教 程
2.
带异常处理嵌套的求二元一次方程的解 22 catch (int)
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 { cerr<<"Sqrt Negative Exception"<<endl; } catch(...) { cerr<<"unexpected or rethrow exception!"<<endl; } } float quotient(int a,int b) throw(char *) { if (b==0) //捕获异常 throw("Divide 0 !"); else return a/(float)b; } Res resolution(int a,int b,int c) { Res tmpr;
第 13 章 异 常 处 理
C + + 语 言 程 序 设 计 教 程
13.4 标准异常类 标准异常类
C++提供了标准异常处理类库,它用来抛出C++标准库中函数执行时 的异常。C++标准异常处理类的层次结构图如下图所示:
exception
第 13 章 异 常 处 理 流
bad_alloc
bad_exceptiont logic_error
第 13 章 异 常 处 理
注意: 注意:
在VC++6.0 环境中,要使用异常处理机制需进行如下设置: Project→Settings…→在Category中选C++Language→选择Enable Exception Handling
《审计学:原理与案例》教学课件11舞弊

C 已向注册会计师披露了已知的涉及管理层、在 内部控制中承担重要职责的员工以及其舞弊行为 可能对财务报表产生重大影响的其他人员的舞弊 或舞弊嫌疑
D 已向注册会计师披露了从现任和前任员工、分 析师、监管机构等方面获知的、影响财务报表的 舞弊指控或舞弊嫌疑
释与心态)
- 漠视监控和降低盗用 资产风险的需要。
- 凌驾于现有控制之上, 漠视对盗用资产的控 制。
- 容忍不重要的偷窃行 为。
机会
- 对资产的内部控制不足,例如职责分离或独立核查、管理层对员工 的监督等。
- 有大量现金经手。 - 固定资产体积小,适于销售,或者缺乏显而易见的所有权标识
思考1(单选题)下列哪项属于侵占资产的手段( )。 A 贪污收入款项 B 隐瞒可能影响财务报表金额的事实 C 滥用或随意变更会计政策 D 构造复杂的交易以歪曲财务状况或经营成果
询问 待续
1.注册会计师应当向管理层询问的事项包括:(1)管理层对舞 弊导致的财务报表重大错报风险的评估;(2)管理层对舞弊风 险的识别和应对过程;(3)管理层就其对舞弊风险的识别和应 对过程与治理层沟通的情况;(4)管理层就其经营理念及道德 观念与员工沟通的情况。
2.向内部审计人员询问的主要内容包括: (1)内部审计人员对被审计单位舞弊风险的认识; (2)内部审计人员在本期是否实施了用以发现舞弊的程序; (3)管理层对通过内部审计程序发现的舞弊是否采取了适当的 应对措施; (4)内部审计人员是否了解任何舞弊事实、舞弊嫌疑或舞弊指 控。这里,舞弊事实是指已经实际发生的舞弊行为的有关情况; 舞弊嫌疑是指怀疑可能会构成舞弊行为的有关情况;舞弊指控是 指对舞弊行为的举报、投诉等方面的有关情况。
C++铁道第2版-11

程序运行结果如下: 请输入三角形的三个边长(a、b、c): 3 4 5↙ a=3,b=4,c=5 三角形的面积=6 请输入三角形的三个边长(a、b、c): int main() 2 2 4↙ { double a,b,c; a=2,b=2,c=4 这三条边不能构成三角形,异常发生,结束! try //检查异常 { cout<<"请输入三角形的三个边长(a、b、c):"<<endl; cin>>a>>b>>c; if (a<=0||b<=0||c<=0) throw 1; // 语句throw抛出int型异常 while (a>0&&b>0&&c>0) { cout<<"a="<<a<<",b="<<b<<",c="<<c<<endl; cout<<"三角形的面积="<<triangle(a,b,c)<<endl; cout<<"请输入三角形的三个边长(a、b、c):"<<endl; cin>>a>>b>>c; if(a<=0||b<=0||c<=0) throw 1; }} //语句throw抛出int型异常 catch(double) // 捕获异常,异常类型是double型 { cout<<"这三条边不能构成三角形,异常发生,结束!"<<endl; } catch(int) // 捕获异常,异常类型是int型 { cout<<"边长小于或等于0,异常发生,结束!"<<endl;} return 0;}
C语言异常处理

C语言异常处理。
三C语言中的异常处理在C语言中异常处理一般有这么几种方式:1.使用标准C库提供了abort()和exit()两个函数,它们可以强行终止程序的运行,其声明处于<stdlib.h>头文件中。
2.使用assert(断言)宏调用,位于头文件<assert.h>中,当程序出错时,就会引发一个abort()。
3.使用errno全局变量,由C运行时库函数提供,位于头文件<errno.h>中。
4.使用goto语句,当出错时跳转。
5.使用setjmp,longjmp进行异常处理。
接下来,我们就依次对这几种方式来看看到底是怎么做的:我们仍旧以前面处理除数为0的异常为例子。
1.使用exit()函数进行异常终止:1#include <stdio.h>2#include <stdlib.h>3double diva(double num1,double num2) //两数相除函数4{5double re;6 re=num1/num2;7return re;8}9int main()10{11double a,b,result;12 printf("请输入第一个数字:");13 scanf("%lf",&a);14 printf("请输入第二个数字:");15 scanf("%lf",&b);16if(0==b) //如果除数为0终止程序17 exit(EXIT_FAILURE);18result=diva(a,b);19 printf("相除的结果是: %.2lf\n",result);20return0;21}其中exit的定义如下:_CRTIMP void __cdecl __MINGW_NOTHROW exit (int)__MINGW_ATTRIB_NORETURN;exit的函数原型:void exit(int)由此,我们也可以知道EXIT_FAILURE宏应该是一个整数,exit()函数的传递参数是两个宏,一个是刚才看到的EXIT_FAILURE,还有一个是EXIT_SUCCESS从字面就可以看出一个是出错后强制终止程序,而一个是程序正常结束。
C语言中的异常处理
C语言中的异常处理异常处理是程序设计中非常重要的一部分,它可以帮助我们处理程序运行中可能发生的错误或异常情况,以保证程序的稳定性和可靠性。
在C语言中,异常处理主要通过错误码和异常处理函数来实现。
在C语言中,错误码通常以整数形式表示,一般情况下,函数执行成功时返回0,而发生错误时会返回一个非0的错误码。
我们可以根据函数返回的错误码来判断程序是否执行成功,并在程序中相应地处理这些错误。
通常可以使用if语句或switch语句来判断错误码,并进行相应的处理,比如输出错误信息、重新执行函数、跳出函数等。
另外,C语言中也提供了一些标准的异常处理函数,比如perror()函数和strerror()函数。
perror()函数可以输出一条描述错误原因的信息,通常这个信息包含了错误码对应的错误描述。
而strerror()函数可以根据给定的错误码返回一个描述错误原因的字符串。
这些函数可以帮助我们更方便地处理异常情况。
除了通过错误码和异常处理函数来处理异常,C语言中还提供了一种异常处理的机制,即setjmp()和longjmp()函数。
setjmp()函数用于设置一个标记点,可以在程序的任何地方调用longjmp()函数跳转到这个标记点,有点类似于goto语句,但更加安全。
这种机制适用于一些复杂的异常处理情况,比如在嵌套函数中处理异常。
在实际编码过程中,我们应该养成良好的异常处理习惯,尽量避免普通错误引起的程序崩溃或运行异常。
可以在关键函数中进行错误检查,并根据不同的错误情况进行相应的处理,比如重试、回滚、报错等。
同时,也要注意程序的健壮性和可靠性,避免出现一些潜在的异常情况。
总的来说,异常处理在C语言中是非常重要的,它可以帮助我们更好地处理程序中可能发生的错误或异常情况,提高程序的健壮性和可靠性。
通过合理地使用错误码、异常处理函数和异常处理机制,我们可以处理各种异常情况,并保证程序的正常运行。
希望大家在编程过程中能够重视异常处理,写出高质量的代码。
第11章 异常处理
1-11
联系方式:
11.2.2 未捕获异常
• 在异常中,除了捕获异常以外的都是未捕获异常。未捕获异常包 括Error类以及它的直接子类和间接子类和RuntimeException类以 及它的直接子类和间接子类。Error类以及它的子类通常是由硬件 运行错误所导致的错误。这些是很严重的错误,通常是不能通过 程序来进行修改的。RuntimeException类以及它的子类通常是程 序运行时引起的异常。 • 提示:Error类以及它的子类通常是由硬件运行错误所导致的错误 。这些是很严重的错误,通常是不能通过程序来进行修改的。 • 前面使用最多的就是数组下标越界异常,该异常就是未捕获异常 。未捕获异常是可以不进行异常处理的,如果不进行异常处理编 译的时候是完全没有问题的,但是在运行时会发生错误。
北京源智天下科技有限公司
1-7
联系方式:
• • • • • • • • • • • • • •
finally语句的语法形式如下所示。 try { //此处是可能出现异常的代码 } catch(Exception e) { //此处是如果发生异常的处理代码 } finally { //此处是肯定被执行的代码 } finally语句虽然在程序中肯定执行,但是为了确保知识的严谨性,这里也给出了几 个可能会中断finally语句执行的情况。首先是finally语句中本身就产生异常;再者 就是执行finally语句的线程死亡,线程的问题会在后面的学习中学习到;还有一种 情况,那就是程序执行到finally语句时停电了。
北京源智天下科技有限公司
1-9
联系方式:
11.2 异常的分类
• 可以对异常进行分类的,从大的角度将异常分为捕获异常和未捕 获异常两类。在Java类库中有一个叫做Throwable类,该类继承于 Object类。所有的异常类都是继承Throwable类,Throwable类有 两个直接子类,Error类和Exception类。在Exception类中又有一 个RuntimeException类。在Exception类中的直接和间接子类中除 去RuntimeException类的直接和间接子类,都是捕获异常。其他 的都为未捕获异常。
DCS系统操作及异常处理培训
联化科技(台州)有限公司ECS-700 DCSDCS系统、操作及异常处理培训设备动力部方荷鼎目录第1章 DCS系统介绍第2章功能介绍第3章基本操作第4章报警信息第5章操作登录与切到观察第6章调节阀操作第7章工艺参数修改第8章趋势曲线查询第9章报表打印及报警打印第10章简单操作问答第11章注意事项第一章 DCS系统介绍1.集散控制系统(DCS)主要由以下三大部分组成:1)分散过程控制装置生产过程的各种过程变量通过分散过程控制装置转化为操作监视的数据,而操作的各种信息也通过分散过程控制装置送到执行机构。
在分散过程控制装置内,进行模拟量与数字量的相互转换,完成控制算法的各种运算,对输入与输出量进行有关的软件滤波及其它的一些运算。
2)操作管理装置操作管理装置是操作人员与集散控制系统间的界面,操作人员通过操作管理装置了解生产过程的运行状况,并通过它发出操作指令给生产过程。
生产过程的各种参数在操作管理装置上显示,以便于操作人员监视和操作。
3)通信系统分散过程控制装置与操作管理装置之间需要有一个桥梁来完成数据之间的传递和交换,这就是通信系统。
有些集散控制系统产品在分散过程控制装置内又增加了现场装置级的控制装置和现场总线的通信系统,有些集散控制系统产品则在操作管理装置内增加了综合管理级的控制装置和相应的通信系统。
这些集散控制系统使系统的分级增加,系统的通信系统对不同的装置有不同的要求,但是,从系统总的结构来看,还是由三大部分组成的2.DCS系统与PLC的主要区别1)DCS系统规模大,PLC规模小;2)DCS网络是整个系统的中枢神经,DCS系统通常采用的国际标准协议 TCP/IP。
它是安全可靠双冗余的高速通讯网络,系统的拓展性与开放性更好。
而 PLC因为基本上都为单个小系统工作,在与别的PLC或上位机进行通讯时,所采用的网络形式基本都是单网结构;3)DCS系统所有 I/O模块都带有 CPU,可以实现对采集及输出信号品质判断与标量变换,故障带电拔,随机更换。
第11章 异常处理结构
fp.close()
except:
#打开文件失败时执行的代码
print('文件不存在')
11.2.4 可以捕捉多种异常的异常处理结构
• 例11-4 使用异常处理结构捕获多种可能的异常。
>>> try: x = float(input('请输入被除数: ')) y = float(input('请输入除数: ')) z=x/y
Please input:888c Error. Please input:888 You have input 888
11.2.3 try...except...finally...
• 例11-3 编写程序,接收一个文本文件的名字,预期该文件中只包含一个整 数,要求输出该数字加5之后的结果。如果文件不存在就提示不存在;如果 文件存在但内容格式不正确,就提示文件内容格式不正确。
11.1 异常的概念与表现形式
>>> len(3)
#参数类型不匹配
TypeError: object of type 'int' has no len()
>>> list(3)
#参数类型不匹配
TypeError: 'int' object is not iterable
>>> import socket
Please input:234c Error. Please input:5 You have input 5
7
11.2.2 try...except...else...
• 例11-2 使用try...except...else...结构改写例11-1的代码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11.1.2 按错误的性质和范围分类 按照错误的性质和范围,一般可以将程序错误分成功 能错误、系统错误、数据错误和代码错误。本书将主 要讨论由代码引起的程序错误。 程序设计中常见的由代码引起的程序错误一般有三种 :编译错误、运行时错误以及逻辑错误。 1. 编译错误 编译错误是指在编译的过程中出现的错误,它是由于 编写的代码不正确而产生的,如关键字书写错误、括 号不匹配、遗漏句末分号、使用无参方法遗漏小括号 等。
说明: 说明: ① try块包含可能导致异常的代码段,是必选项。 ② catch块包含异常处理代码块,为可选项,可以有 一个或者多个catch块。 ③ finally块包含异常处理后要执行的代码段(总是会 执行),也为可选项,并且只能有一个。但当存在 catch catch块(一个或者多个),finally块可以没有,而没 finally 有catch块时,必须要有finally块。 ④ try...catch...finally的执行过程为:首先执行try块包 含的语句,若没有发现异常,则继续执行finally块包 含的语句,执行完后跳出try结构;若在try块包含的语 句中发现异常,则立即转向执行catch块包含的语句, 然后再执行finally块包含的语句,执行完后跳出try结 构。
在Visual C# 2005中处理异常时,需要在代码中关注三 个部分: (1)可能导致异常的代码段(通常称为抛出异常)— —try块。 (2)当执行代码过程中发生异常时将要执行的代码段 (通常称为捕获异常)——catch块。 (3)异常处理后要执行的代码段(可选的,通常称为 结束块)——finally块。
ห้องสมุดไป่ตู้
11.2.2 调试程序举例 下面通过一个实例来学习使用Visual C# 2005的调试工 具,并且从中学到如何排查前面介绍的程序逻辑错误 的方法。 【例11-1】新建一个Windows应用程序,输入一个百 】 分制整数成绩,首先判断输入是否有效(0~100), 若无效,则弹出消息框提示“输入错误!”;否则将其 转换成等级制成绩并输出(为简化程序,本例中只分 为及格和不及格两种情况)。
11.3.1 try...catch...finally try...catch...finally为Visual C# 2005的结构化异常处理控制块, 它们都有一个关联的代码块,try...catch...finally的基本形式如下 : try { // 可能导致异常的代码段 } [catch { // 异常处理代码块 }] [finally { // 异常处理后要执行的代码段 }]
第11章 程序错误与异常处理
异常处理是指解释和响应因程序错误而产生的异常。很多 程序员常常会忽视异常处理的重要性,这会给他们的代码 造成相当大的损害,从而会大大降低产品的质量。本章将 讨论如何在Visual C# 2005中使用异常处理。 本章学习目标: (1)理解错误与调试、错误与异常的概念。 (2)理解常见程序错误的类型。 (3)熟练掌握程序调试的基本方法,以及断点、临时表达 式、单步运行等程序调试工具的使用方法。 (4)熟练掌握.NET框架提供的结构化异常处理的方法。 (5)掌握.NET的异常类及throw语句的使用方法。
11.4.2 throw语句 语句 在第5章(5.5.5小节)中介绍过,throw语句用于发出 在程序执行期间出现异常的信号,通常throw语句与 try...catch或 try...finally语句一起使用。当引发异常时 ,程序查找处理此异常的catch语句,也可以用throw 语句重新引发已捕获的异常。 1. 使用内置异常类抛出异常 2. 自定义异常类
11.2 程序调试
所谓程序调试,是将编制的程序投入实际运行前,用手工 或编译程序等方法进行测试,修正语法错误和逻辑错误的 过程。这是保证程序正确性必不可少的步骤。 11.2.1 程序调试工具 Visual C# 2005提供的程序调试工具包括断点、临时表达式 、单步运行等,打开【调试】菜单,如下图所示。
图11-15 try...catch...finally的执行过程 从图中可以看出,finally块总是会被执行。
11.3.2 异常处理程序举例 【例11-2】已知一个数组中有10个元素,其值分别为0 】 ,1,4,9,16,……,81。创建一个Windows应用程 序,输入数组元素的下标,然后通过下标访问并输出 相应的数组元素。要求使用try...catch...finally结构处 理输入下标越界的情况,并在finally块中清除输入的 数据,等待多次输出。 在一个大型的程序中,出现异常是难免的,如果每次 都终止程序的运行,显然是不合理的。因此,要养成 良好的编程习惯,在可能出现异常的代码中,使用异 常处理,以提高产品的质量。
2. 运行时错误 运行时的错误是指程序在运行期间执行了非法操作或 操作失败,例如:打开的文件没有找到、磁盘空间不 足、数组下标越界、除法运算中除数为零等。这种错 误往往在编译时难以发现,只有在运行时才能表现出 来。 3. 逻辑错误 逻辑错误是当程序未按照预定方式执行而产生的错误 ,逻辑错误在编译时、运行时都检查不出来,但是达 不到预期的执行结果。这种错误最难以排查,需要仔 细分析并借助调试工具才能查出并改正。
11.4 异常类
11.4.1 异常基类 Microsoft在.NET Framework中定义了大量的异常基类 ,如下图所示的类结构图显示了其中的一些异常基类 ,给出了异常类大致的结构模式。
通常对于.NET类来说,一般的异常类System.Exception派生于 System.Object,通常不在代码中抛出System.Exception对象,因 为它无法确定错误情况的本质。 在异常类层次结构图中有两个非常重要的类,它们均派生于 System.Exception: (1)System.SystemException。 System.SystemException异常类通常由.NET运行库抛出,也可以 由应用程序抛出。例如,如果.NET运行库检测到堆栈已满,就 会抛出StackOverflowException;如果检测到调用方法时参数不 正确,则用户可以在自己的代码中选择抛出ArgumentException 或其子类。System.SystemException的子类包括表示致命错误和 非致命错误的异常。 (2)System.ApplicationException。 System.ApplicationException异常类是一个第三方定义的异常类 。如果用户自己定义的异常覆盖了应用程序所独有的错误情况 ,就应当使它们直接或间接的派生于异常类 System.ApplicationException。
小结 调试是编写完美程序的重要步骤和手段,异常处理是避免应用 程序出错的一道“防火墙”。为减少调试过程中的麻烦,应养 成良好的编程习惯,如使用合适的变量声明、适当的添加注释 、模块化编程等,这样在调试程序时会事半功倍。 本章首先讨论了三种常见的程序错误:编译错误、运行时错误 、逻辑错误以及如何利用调试工具调试应用程序。接下来介绍 了程序异常处理的方法,结构化异常处理try…catch…finally控制 结构。 重点及难点: (1)错误与调试、错误与异常的概念及常见程序错误的类型。 (2)程序调试的基本方法,以及断点、临时表达式、单步运行 等程序调试工具的使用方法。 (3)结构化异常处理try…catch…finally控制结构及其实现方法 。 (4).NET的异常类及throw语句的使用方法。
表11-4 常用的异常类
异常类 AccessException ArgumentException ArgumentNullException ArgumentOutOfRangeException IndexOutOfRangeException FileNotFoundException EndOfStreamException DirectoryNotFoundException NullReferenceException 说明 访问类的方法或数据时出错 传给方法的参数是无效的 参数是空的 参数越界 数组下标越界 文件没有找到 访问超出了流入数据(或文件)的末端 目录没有找到 对象变量没有初始化成一个实际的值
11.3 结构化异常处理
错误是指在执行代码过程中发生的事件,它中断或干 扰代码的正常流程并创建异常对象。当程序中的错误 中断流程时,该程序将尝试寻找异常处理程序(一段 告诉程序如何对错误做出响应的代码),以帮助程序 恢复流程。换句话说,错误是一个事件,而异常是该 事件创建的对象。 .NET框架提供一种标准的错误报告机制称为结构化异 常处理。这种机制依赖于应用中报告错误的异常。在 .NET中,异常是一些提供错误信息的类,程序员可以 用某种方式编写代码监视异常的发生,然后以一种适 当的方法处理异常。
11.1 程序错误的分类
程序错误是指在执行程序代码的过程中,影响程序正常执行的 异常现象。 11.1.1 按错误的影响和后果分类 按照错误的影响和后果,一般可以将程序错误分为较小错误、 中等错误、严重错误和最严重错误。 (1)较小错误:较小错误是指不影响程序的正常运行的错误, 例如只对系统输出有一些非实质性影响的情况。 (2)中等错误:中等错误是指对系统的运行有局部影响。例如 输出的某些数据有错误或出现冗余的情况等。 (3)严重错误:严重错误是指系统的行为因错误的干扰而出现 明显不合情理的现象;系统运行不可跟踪,一时不能掌握其规 律,时好时坏等情况。 (4)最严重错误:最严重错误造成的后果非常严重,例如系统 运行中突然停机,系统无法软启动;或是系统运行导致环境破 坏;甚至造成事故,引起生命、财产的损失等情况。
说明: 说明:ArgumentOutOfRangeException和 IndexOutOfRangeException异常类都属于 OutOfRange,即下标出界,输出的错误都是“索引超 出范围”。但两者是有区别的,其中 ArgumentOutOfRangeException异常当调用某个方法 ,如果在传递给该方法的参数中至少有一个不为空引 用且不包含有效值时引发;而 IndexOutOfRangeException异常则是当访问索引超出 数组界限的数组元素时引发,并且 IndexOutOfRangeException异常类是一个不可继承的 类(密封类)。