异常知识点

上传人:hs****ma 文档编号:477392969 上传时间:2024-02-22 格式:DOC 页数:11 大小:26.50KB
返回 下载 相关 举报
异常知识点_第1页
第1页 / 共11页
异常知识点_第2页
第2页 / 共11页
异常知识点_第3页
第3页 / 共11页
异常知识点_第4页
第4页 / 共11页
异常知识点_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《异常知识点》由会员分享,可在线阅读,更多相关《异常知识点(11页珍藏版)》请在金锄头文库上搜索。

1、知识点:1、 什么是异常。异常是程序正常执行过程中出现的不正常的情况。例如: 人在成长过程中,是个正常的执行过程,但成长过程中会经常生病,这就是异常。为了防止这种不正常的情况,我们会采取一系列措施,比方:从小锻炼身体,吃新鲜干净的食物,营养合理的搭配,以增强我们的体质。提高抗病能力。程序我们为了提高它运行时的强健性,我们也得采用一些措施。那么怎么提高程序的强健性呢?程序中我通过异常的捕获来增加程序的强健性。2、 异常捕获的顺序是怎样的呢?当一个异常发生或抛出。那么正常的程序执行序列将被终止,程序将对异常进展处理,我们称之为抛出异常被捕获。中通过使用语句把可能抛出异常的语句包起来。例如:前面讲到

2、资源文件类类在进展文件加载时,使用以下语句捕捉异常。( e)(e);3、 异常的类型是怎样的呢?所有异常类的超类是。在下有两个子类,一个是,另一个是。是错误,程序员无法控制,是异常,程序员可以通过异常捕获加以控制。例如:电脑运行中中毒了,我们可以通过杀毒软件来处理,处理完了以后可以继续使用,这叫异常,我们可以控制。但电脑出现了蓝屏或死机的时候,我们就不能进展任何操作了。这就是错误,我们无法控制。4、 程序中异常是怎么发生的呢? = (, “请输入年龄);以上代码要求用户输入年龄,年龄是个数字。但通过得到的是个字符串。所以我们需要(),将字符串转成数字。这个时候,如果用户输入的不是一个数字型的字

3、符串,而是一个非数字的字符串如字母、符号,在进展()转化是就会发生一个异常。如果我们不对它作任何处理,程序就有可能因此终止掉。5、 怎样捕获一个异常呢。a、 把正常运行的代码放在块里。b、 如果程序中出现了异常就把异常抛出在中,如果中能捕获抛出的异常。那么就会进展处理。处理的代码写在块中。程序块里面的语句是按顺序执行的语句当程序块里面的语句抛出一个异常的时候,程序的控制转向了相匹配的程序块,程序块里面的语句被执行。当异常发生后,程序执行将忽略程序块中剩余的语句,继续执行程序块后面的语句。如果在程序块中没有抛出异常,那么块将被忽略。程序将继续执行下面的语句例如:(“开场)1 4/02(“执行)3

4、( e)(“发生异常)4(“异常处理外部);这是发生异常的情况,在块里顺序执行,先打出“开场,没有异常继续执行,当执行到第2行时,因为0不能做除数,所以会发生一个算术异常。这个时候就会跳过块里剩下的语句转去执行块中的内容。所以第3行就不能执行。跳到块中执行第4句,打出“发生异常。执行完以后接着往下顺序执行。打出第5行“异常处理外部。(“开场)1 4/22(“执行)3( e)(“发生异常)4(“异常处理外部);这是正常情况,在块里顺序执行,先打出“开场,没有异常继续执行,当执行到第2行时,得到x的值为2,不会有异常。这个时候继续执行到第3行,打出“执行。因为在块中没有任何异常,执行完以后接着往下

5、顺序执行。打出第5行“异常处理外部。在类中有两个方法,可以用于获取抛出异常的信息6、 抛出异常在一个语句中,当有多个块的时候,它们被顺序检查在检查过程中,注意异常的匹配关系是很重要的当一个异常被抛出,及它相匹配的块被执行,其它的块,就被忽略掉不再执行如果没有块匹配抛出的异常,那么系统会在堆栈中搜索,找到一个匹配的捕获方法。如果仍然没有找到,那么系统将处理抛出异常什么叫异常和块相匹配:1、抛出的异常和捕捉的异常是同一个类2、抛出的异常是捕捉异常的子类3、多个块中 如果捕捉的异常之间有继承关系 那么不要把父类放在子类之前这种做法也不被允许4、尽量不要偷懒 使用具体异常类而不要使用例如: 4 ;(a

6、6)1 3/02( e)捕获第2行异常(算术错误);( e) 捕获第1行异常(数组下标越界);不同的异常由不同的块进展捕获。发生异常时由相应的块进展处理。块中怎么捕获异常? 3/0;( e)抛出异常和捕获异常是同一个类(算术错误); 3/0;( e)抛出异常是捕获异常的子类(算术错误); 4 ;(a6);(. e)(发生异常);( e)(数组下标越界);这种方式不被允许,因为块前一个异常是后一个异常 的父类。所以有异常前一个异常 块都捕获了。后一个块永远不会被执行。编译会出错。 4 ;(a6);( e)(数组下标越界);( e)(发生异常);这种方式允许。如果有数组下标越界异常由第一个块处理。

7、如果有其它异常由第二个块处理。7、如果有一块代码不管是否发生异常抛出都要被执行,我们使用关键字这样的机制有助于我们进展系统资源的回收。比方:在数据库操作时,如果发生了异常,那么数据库连接就可能不会关闭,而一直长驻内存。在进展文件读取和写入时,如果发生了异常就可能流不会关闭。所以使用可以解决这样的问题。这样的构造可以用警察抓小偷来说明,警察抓小偷,如果小偷守法没有异常那么警察就不会抓他,如果小偷违法发生异常,那么警察就抓它往监狱里放代码块。不管抓没有抓到,警察工资照拿。(内容) 9/3;(“正常执行);( e)(发生异常);(内容);因为正常执行,所以里内容不会执行。执行结果是“正常执行和“内容

8、 9/0;(“正常执行);( e)(发生异常);(内容);因为发生异常,所以里内容执行。执行结果是“发生异常和“内容8、关于的问题大家都知道 是跳出方法的语句,如果在里有语句那么里的内容会不会执行呢?答案是会的。会在语句之前执行,执行完语句之后,语句再执行。 9/01( e)(发生异常);(内容);(异常外部内容 );该代码发生了异常。所以第一行代码以下语句会被忽略,所以语句不会执行。该代码执行结果为“发生异常、“内容、“异常外部内容 9/4;(正常执行);( e)(发生异常);(内容);(异常外部内容 );该代码没有发生异常。顺序执行。先打“正常执行,遇到语句后,在返回前,先执行“内容再做返

9、回。因为方法已经跳出,所以“异常外部内容不会执行。在任何时候都会执行,但有一个例外那就是程序终止时,不会执行。 9/4;(“正常执行);(0);( e)(发生异常);(内容);(异常外部内容 );因为没有异常,所以“正常执行会打出来,但这个时候程序终止运行。所以内容不会打出来。9、关于异常对象异常也是一个对象。它是类或子类的一个对象 9/01( e)2(发生异常);在执行到第1行时,发生了异常。这时候会产生一个和异常相匹配的异常对象。然后在第2行时,用一个 e的一个变量去指向它。这个时候,如果人为的抛出一个异常也可以到达一样的效果。这就是语句。将显示的产生一个异常对象,并做抛出。语法如下: 异

10、常对象( ()。10、传播异常一个方法可以抛出异常,这样的话,在方法里我们就不用去捕获方法里可能发生的相关异常。那么谁去处理这个异常呢?由调用该方法的代码块去处理。那么怎么样在方法里抛出异常呢?我们需要修改方法的声明头,声明方法传播的异常类型我们使用关键字来完成这个声明例: c( ) d( ) 在d()方法中抛出了异常,但在方法体里却可以不产生异常对象。就象要开枪先瞄准,但瞄准后可以不开枪。11、异常的类型异常会为编译期异常和运行期异常。或检查异常和非检查异常其中运行期异常是类和它的子类。除此之外都是编译期异常。编译期异常是我们必须要捕获的,而运行期异常却可以捕获,也可以不捕获。就象警察一样,

11、大案和要案是必须要立案侦破的,而小偷小摸的毛贼,可以抓也可以不抓。编译异常我们必须要处理,要么用包围,要么做方法抛出。如果一个方法抛出编译期异常,那么调用该方法时,必须处理,如果抛出运行期异常,那么调用该方法时,可处理可不处理。 C( ) a() c(); ( e)(“异常);()1()2()3()4代码分析:在方法里分别调用了四个方法。其中第1行代码调用方法。该方法抛出异常。而是的子类,所以可以不处理。不会发生编译错误。第2行代码调用方法,该方法抛出。这是所有异常和错误的超类,包含编译期异常,所以必须处理。直接写的话,编译会出错。第3行调用方法,该方法抛出异常,包括编译异常,所以也必须捕获。

12、第4行调用方法,该方法抛出异常,而是的子类,所以也必须捕获。12、断言当你在编译和运行带有断言的程序的时候,请确定使用正确的版本在方法里先断定某个条件为真,如果条件满足,那么执行方法,否那么抛出一个错误。断言语句的标准语法如下 ;断言语句也可以像下面的这个语法形式: : ;在 的这个位置,描述了一个传递给类构造方法的参数值。这个参数值用以描述抛出错误的详细信息在 2 1.4以前的版本中, 是一个合法的非保存字的标示符。而在 2 1.4或以上版本中,为了保证兼容性,被当作了规那么标示符对待, 即被当做了一个保存字使用断言时,必须翻开断言开关。具体语法如下: 1.4 断言分类:前置断言:检测一个方法执行之前,检测条件必须为.后置断言:检测一个方法执行之后,检测条件必须为.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题 > 初中试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号