异常错误处理中的安全课件.pptVIP

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

第四章异常/错误处理中的安全

w异常/错误处理是程序设计中的常见内容,异常/错误处理的技巧和程序的安全性有着密切的关系。科学的异常/错误处理方法,是系统安全性的重要保障。w一般说来,程序开发过程中可能出现的问题有如下几种:ü编译错误:程序语法写错了,比如在C++中,inta写成了Inta,这种错误,编译器能够进行提示,一般比较容易解决。ü运行错误:程序语法没有问题,但是在运行的时候发生了问题。比如连接数据库代码本来是正确的,但是运行的时候数据库突然断电,程序不能正常运行,这是在代码编写阶段应该预计到的,可以由异常处理解决(Java语言中定义了Error和Exception,都是为了解决此类问题);在某些语言(如VB)中,没有面向对象的异常处理机制,此时设计了面向过程的错误处理方法来解决这个问题。ü另外一种是逻辑错误,程序语法没有问题,也没有异常,但是就是得不到正确的结果,这需要靠程序员非常高超的编程经验来进行处理;这不属于本章研究的范围。

4.1异常/错误的基本机制

4.1.1异常的出现如前所述,异常主要是针对程序语法没有问题时,在运行的过程中出现的突发情况。以Java语言为例,如下代码的主要作用是让用户输入一个数字,显示其平方,代码如P04_01.java。运行这个程序,按照正常输入“12”,能够打印正确结果。但是,用户的输入是不可预计的。如果用户不小心输入一个无法转换成数值的字符串,如“12o”,结果如下:

界面上没有出现结果,而是打印了一堆莫名其妙的东西。如果这个程序给用户使用,用户会觉得莫名其妙,也就是说这里没有给用户一个较为友好的界面,至少应该提示用户格式输错了;更进一步说,这种问题如果事先不能预见并且认真处理,严重的情况下甚至会造成系统运行的不正常。从以上的程序可以看出,异常的出现,是在程序编译通过的情况下,程序运行过程中出现一些突发情况造成的,这些突发情况,需要有良好的预见性,预先进行处理,以保证系统的安全性;这就对程序员提出了更高的要求。实际上,要预见程序可能出现的所有异常,几乎是不可能的。

常见异常可能出现的场合如:ü访问数据库时,数据库停止工作;ü访问文件,文件恰好在被另一个程序访问;ü输入一个以0当除数的数值;ü类型转换,对象未分配内存;等等。提示值得一提的是,异常和错误实际上在不同的语言中,有不同的说法。一从上面可能出现异常的场合可以看出,异常是几乎所有高般说来,异常叫做Exception,错误叫做Error。Java中定义了级语言都可能出现的情况,在面向对象的语言里面,C++、Exception和Error,来处理异常和错误,本章主要是针对Exception进C#等也会出现类似的情况,包括一些非面向对象的语言,如行讲解;VB中主要处理的对象是Error,实际上和Java中的ExceptionVB更,加也类似必,须只要是说面法对不程同。序运行过程中的异常现象。虽然处理方法不同,但本质类似。

4.1.2异常的基本特点从上节的程序可以看出,从控制台的打印来看,程序在底层有一个提示:,意思是说出现了一个异常,并且显示了异常出现的位置在第11行:提d示oublenumber=Double.parseDouble(str);无法将字符串转换为数值。不管什么语言的初学者,一看到程序抛出异常就非常畏惧,这很正常。该不处过,,如异果常在类测型试为的过程可中,以程查序看出文现档异常找信到息该,有类时,候在可文以档成中为非排常错详细的良好手段。一般情况下,此时可以首先查看异常种类,根据文档查询地说明了该异常出现的原因:该种异常出现的原因;然后查看异常消息和异常出现的地点,可以顺利翻译成中文是:当试图将一个不符合数值格式的字符串转成数值时,地解决编程中出现的问题。程序抛出该类异常。

当系统底层出现异常,实际上是将异常用一个对象包装起来,传给调用方(客户端),俗称抛出(throw)。比如在这个程序里面,发生了数字格式异常,这个异常在底层就被包装成为的对象抛出。异常对象抛出给谁呢?抛出给函数的调用者;如果调用者具有对异常处理的代码,则将异常进行处理;否则将异常继续向前抛出;如果直到用户端还没有对异常进行处理,异常将会在标准输出(如控制台)上打印。对于非面向对象语言,异常出现的原理类似。

w程序中可能出现的异常有很多种类,如:ü算术异常,如除数为0;ü数组越界异常;ü类型转换异常;ü未分配内存异常;ü数字格式异常;等等。

代码中出现异常,在该作用域内,出现异常代码后面的其他代码将不会执行。如上节代码中,在第11行出现了异常,那么第11行后面的代码将不会执行,当然也没有打印“程序运行完毕”。由此可见,在复杂的系统中,异常处理不当,不仅仅是没有给用户一个友好界面的问题;更重要的是,如果对异常不闻不问,或者

您可能关注的文档

文档评论(0)

181****9050 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体成都流风亮科技文化有限公司
IP属地四川
统一社会信用代码/组织机构代码
91510104MAD5X4DGXA

1亿VIP精品文档

相关文档