- 1、本文档共43页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
04 异常错误处理中的安全.ppt
第四章 异常/错误处理中的安全 异常/错误处理是程序设计中的常见内容,异常/错误处理的技巧和程序的安全性有着密切的关系。科学的异常/错误处理方法,是系统安全性的重要保障。 一般说来,程序开发过程中可能出现的问题有如下几种: 编译错误:程序语法写错了,比如在C++中,int a写成了Int a,这种错误,编译器能够进行提示,一般比较容易解决。 运行错误:程序语法没有问题,但是在运行的时候发生了问题。比如连接数据库代码本来是正确的,但是运行的时候数据库突然断电,程序不能正常运行,这是在代码编写阶段应该预计到的,可以由异常处理解决(Java语言中定义了Error和Exception,都是为了解决此类问题);在某些语言(如VB)中,没有面向对象的异常处理机制,此时设计了面向过程的错误处理方法来解决这个问题。 另外一种是逻辑错误,程序语法没有问题,也没有异常,但是就是得不到正确的结果,这需要靠程序员非常高超的编程经验来进行处理;这不属于本章研究的范围。 本章主要针对异常和错误处理中的安全问题进行讲述,首先基于面向对象语言,讲解异常的基本机制,然后讲解异常的捕获和处理中的安全,最后针对面向过程的错误处理方法来阐述安全问题。 4.1 异常/错误的基本机制 4.1.1 异常的出现 如前所述,异常主要是针对程序语法没有问题时,在运行的过程中出现的突发情况。本节将用一个例子,来描述异常的出现。以Java语言为例,如下代码的主要作用是让用户输入一个数字,显示其平方,代码如P04_01.java 。 运行这个程序,按照正常输入“12”,能够打印正确结果。 但是,用户的输入是不可预计的。如果用户不小心输入一个无法转换成数值的字符串,如“12o”,结果如下: 界面上没有出现结果,而是打印了一堆莫名其妙的东西。如果这个程序给用户使用,用户会觉得莫名其妙,也就是说这里没有给用户一个较为友好的界面,至少应该提示用户格式输错了;更进一步说,这种问题如果事先不能预见并且认真处理,严重的情况下甚至会造成系统运行的不正常。 从以上的程序可以看出,异常的出现,是在程序编译通过的情况下,程序运行过程中出现一些突发情况造成的,这些突发情况,需要有良好的预见性,预先进行处理,以保证系统的安全性;这就对程序员提出了更高的要求。实际上,要预见程序可能出现的所有异常,几乎是不可能的。 常见异常可能出现的场合如: 访问数据库时,数据库停止工作; 访问文件,文件恰好在被另一个程序访问; 输入一个以0当除数的数值; 类型转换,对象未分配内存;等等。 从上面可能出现异常的场合可以看出,异常是几乎所有高级语言都可能出现的情况,在面向对象的语言里面,C++、C#等也会出现类似的情况,包括一些非面向对象的语言,如VB,也必须要面对程序运行过程中的异常现象。虽然处理方法不同,但本质类似。 4.1.2 异常的基本特点 从上节的程序可以看出,从控制台的打印来看,程序在底层有一个提示:java.lang.NumberFormatException,意思是说出现了一个异常,并且显示了异常出现的位置在第11行: 无法将字符串转换为数值。 该处,异常类型为:java.lang.NumberFormatException。可以查看文档,找到该类,在文档中非常详细地说明了该异常出现的原因: 翻译成中文是:当试图将一个不符合数值格式的字符串转成数值时,程序抛出该类异常。 当系统底层出现异常,实际上是将异常用一个对象包装起来,传给调用方(客户端),俗称抛出(throw)。比如在这个程序里面,发生了数字格式异常,这个异常在底层就被包装成为java.lang.NumberFormatException的对象抛出。异常对象抛出给谁呢?抛出给函数的调用者;如果调用者具有对异常处理的代码,则将异常进行处理;否则将异常继续向前抛出;如果直到用户端还没有对异常进行处理,异常将会在标准输出(如控制台)上打印。 对于非面向对象语言,异常出现的原理类似。 程序中可能出现的异常有很多种类,如: ?? 算术异常,如除数为0; ?? 数组越界异常; ?? 类型转换异常; ?? 未分配内存异常; ?? 数字格式异常;等等。 代码中出现异常,在该作用域内,出现异常代码后面的其他代码将不会执行。如上节代码中,在第11行出现了异常,那么第11行后面的代码将不会执行,当然也没有打印“程序运行完毕”。 由此可见,在复杂的系统中,异常处理不当,不仅仅是没有给用户一个友好界面的问题;更重要的是,如果对异常不闻不问,或者不恰当地处理异常,会给系统带来巨大的安全隐患。 4.2 异常捕获中的安全 4.2.1 异常的捕获 异常出现之后,我们可以通过查看文档来了解其发生的原因。但是,了解异常出现的原因,并
您可能关注的文档
- 丁洪波“交易中的平衡智慧”.doc
- c++课程设计_凌宗仁.doc
- C++麻将算法.docx
- C.OpenXLive 开发初体验-马宁.pptx
- C10(链表).ppt
- 东坡文集.doc
- C3-选择结构.pptx
- c5(函数).ppt
- C6(数组).ppt
- C8051F学习笔记.doc
- 电动汽车动力电池检测与维修【实训指导书】5-2 检修动力电池热管理系统三通电磁阀.docx
- 新能源汽车电气设备检修课件 任务2 检修新能源汽车无钥匙进入和启动系统故障.pptx
- 新能源汽车电气设备检修课件 任务1 识读新能源汽车电路.pptx
- 电动汽车动力电池检测与维修课件 模块2 充电系统检修.pptx
- 电动汽车动力电池检测与维修电子教案 模块5 动力电池热管理系统检修.docx
- 材料力学课件 课程思政2-第4章 扭转.pptx
- 材料力学课件 第二章轴向拉伸与压缩.ppt
- 低压电气技术与应用课件 任务二 反接制动控制电路的安装与调试.pptx
- 材料力学课件 第一章绪论.ppt
- 低压电气技术与应用课件 任务四 两台电动机顺序起动逆序停止控制电路的安装与调试.pptx
文档评论(0)