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
- 中国国家标准 GB/Z 41305.6-2026环境条件 电子设备振动和冲击 第6部分:利用螺旋桨式飞机运输.pdf
- 《GB/T 46969-2025中国图书馆机读规范数据格式》.pdf
- 《GB/T 12903-2025个体防护装备术语》.pdf
- 2025至2030中国负载测试工具行业细分市场及应用领域与趋势展望研究报告.docx
- 2025至2030中国钨(VI)氟化物气体市场竞争格局及未来需求趋势分析报告.docx
- 2025至2030中国医用隔离膜产品行业调研及市场前景预测评估报告.docx
- 2025至2030中国铜材市场经营模式分析及竞争趋势预测报告.docx
- 2025至2030中国氙气试验箱行业调研及市场前景预测评估报告.docx
- 2025-2030中国PDLC智能调光膜市场产销需求与竞争前景分析研究报告.docx
- 2025至2030中国电子稳压器行业市场深度研究与战略咨询分析报告.docx
最近下载
- 一种棋类教学展示用面板.pdf VIP
- 《支气管哮喘哮喘》课件.ppt VIP
- 2024年茶评员高级技师(一级)职业鉴定理论考试题库(含答案).docx VIP
- 信息科技大单元教学设计之七年级第三单元便捷的互联网服务.pdf VIP
- 浙江杭州市临安区中医院招聘笔试备考试题及答案解析.docx VIP
- 2024年茶评员技师(二级)职业鉴定理论考试题库资料(含答案).pdf VIP
- 山西省办理《出生医学证明》授权委托书.docx VIP
- 2025年杭州市临安区中医院医共体招聘合同制员工11人笔试备考试题及答案解析.docx VIP
- 2026年云南省昆明市“三诊一模”高考物理模拟试卷(一)(含答案).pdf VIP
- 天融信防火墙NGFW4000配置手册簿.pdf VIP
原创力文档

文档评论(0)