第05章 异常处理(信息学院2014级)

合集下载

Java程序设计课件:异常处理

Java程序设计课件:异常处理
一般不声明抛出超过3个的异常,如果发生这种情况,也要通过 代码重构或将多个异常映射到一个通用异常中来解决该问题, 或者在方法内部自行消化部分内部异常。
将异常组织成一个对象树结构,有利于保持方法定义的稳定性, 同时也给方法的使用者提供了以不同粒度处理异常的自由。
17/22 2023/12/28
7.3 自定义异常
Java程序设计
异常处理
本章主要内容
异常的概念 处理异常 自定义异常 小结
2023/12/28
2/22
异常的概念
凡是在运行时进入的不正常状态都称为错误。 这些错误根据错误的严重性可以分为两类:
一类是致命性的错误,它们的出现可能会导致系 统崩溃,并且程序员并不能编写程序解决所出现 的问题;
非法访问异常,如试图访问非公有方法。
实例化异常,如实例化抽象类。 中断异常。 输入输出异常。
找不到指定的字段异常。
找不到指定方法异常。
打印机错误报告异常。 运行时异常。 SQL语句执行错误异常。 线程阻塞超时异常。 执行转换算法异常。
2023/12/28
7/22
常见的RuntimeException类的子类
2. 抛出的异常对象如果属于 catch括号中要捕获的异常类 ,则catch会捕获此异常,且 为该异常创建一个引用名,然 后执行catch程序块中的异常 处理程序。其中“……”表示 多个catch程序块,每个catch 程序块捕获一种异常。
3. 无论try程序块是否捕获到 异常,或者捕获到的异常是否 与catch() 括号内的异常类型 相同,最后一定会运行finally 块里的程序代码。
} }
11/22 2023/12/28
异常捕获策略
尽可能只捕获指定的异常,而不是捕获多个异常的公共父 类,除非确信这个异常的所有子类对程序来说是没有差别 的,可以同样的方式来处理它们,同时也要考虑该异常将 来可能的扩展。只要有可能,就不要捕获 ng.Exception或ng.Throwable。

第5章 异常处理

第5章 异常处理

发现和排除: 发现和排除:
Java解释器在运行时能够发现语义错,一旦发现了语义错, 解释器在运行时能够发现语义错,一旦发现了语义错, 解释器在运行时能够发现语义错 Java将停止程序运行,并给出错误的位置和性质。 将停止程序运行, 将停止程序运行 并给出错误的位置和性质。
6
5.1.1 程序错误、发现时刻及错误处理原则 程序错误、 3. 逻辑错 —logic error
14
图5.1 Java程序发现错误和异常
修改 Java程序
编译 事先处理 避免异常 有 有语法错? 事后处理 异常处理
没有
运行
出现运行时错误?

没有
错误
异常
程序运行 正常结束
程序非正常 终止运行
程序非正常 终止运行
修改
15
5.1.3 Java的错误和异常 的错误和异常
3. 错误类和异常类 (1) Error类(错误类 错误类) 类 错误类
92. 面向对象语言异常源自理的思想异常处理机制的优越性体现在以下两方面: 异常处理机制的优越性体现在以下两方面: 优越性体现在以下两方面 从语法上看,异常处理语句将程序正常代码与 从语法上看,异常处理语句将程序正常代码与错误处理代码 程序正常代码 分开,使程序结构清晰,算法重点突出,可读性强。 分开,使程序结构清晰,算法重点突出,可读性强。 从运行效果看,异常处理语句使程序具有处理错误的能力。 从运行效果看,异常处理语句使程序具有处理错误的能力。 使程序具有处理错误的能力 即使发生了运行错,应用程序能够捕获异常并及时处理异常, 即使发生了运行错,应用程序能够捕获异常并及时处理异常, 使程序从运行错误中很好地恢复并继续运行, 使程序从运行错误中很好地恢复并继续运行,而不会导致程序 运行非正常终止。而且,如果当前方法没有能力处理异常, 运行非正常终止。而且,如果当前方法没有能力处理异常,还 可以将异常转交给调用者处理。 可以将异常转交给调用者处理。

《Java程序设计与应用开发》第5章:异常处理

《Java程序设计与应用开发》第5章:异常处理

遭遇异常-续
上例中出现的FileNotFoundException和IOException异常,可以使用 两个对应的catch块分别加以捕获: catch(FileNotFoundException e){ System.out.println("File Not Found"+e.getMessage()); }catch(IOException e){ System.out.println("IO Exception"+e.getMessage()); }
捕获异常-续 捕获异常-续
在catch块后,还可以跟随finally块: ... try{ ... }catch(...){ ... }finally{ ... } ...
捕获异常-续 捕获异常-续
无论try块中是否出现异常,finally块中的语句总是得到执行。分三种情 形来看: (1) try块中的代码不抛出异常。try块中所有的代码将被执行,随后执行 finally块中的代码,最后执行finally块之后的代码。 (2) try块中的代码抛出异常,但有相应的catch语句捕获。此种情形下, try块中抛出异常前的代码均被执行,剩下的代码被跳过;然后进入相应 的catch块,catch块中的代码执行完毕后,执行finally块中的代码。 需要注意的是,如果在执行catch块中的语句时没有出现异常,在执行完 finally块中的代码后,将继续执行finally块之后的代码;如果在执行 catch块中的语句时也出现异常,这个异常会直接返回到该方法的调用者 (当然,是在finally块中的语句执行完毕之后),finally块之后的代码 将被跳过。 (3) try块中的代码抛出异常,但没有相应的catch语句捕获。此种情形下,try 块中抛出异常前的代码均被执行,剩下的代码被跳过;然后执行finally块 中的代码;最后,将异常返回给方法的调用者;finally块之后的代码将被 跳过。

异常处理方法及流程

异常处理方法及流程

异常处理方法及流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!# 异常处理方法及流程一、异常处理的目标异常处理的主要目标是确保程序在遇到异常情况时能够继续稳定运行,同时提供有用的错误信息,以便开发人员能够快速定位和解决问题。

C语言中的异常处理

C语言中的异常处理

C语言中的异常处理异常处理是程序设计中非常重要的一部分,它可以帮助我们处理程序运行中可能发生的错误或异常情况,以保证程序的稳定性和可靠性。

在C语言中,异常处理主要通过错误码和异常处理函数来实现。

在C语言中,错误码通常以整数形式表示,一般情况下,函数执行成功时返回0,而发生错误时会返回一个非0的错误码。

我们可以根据函数返回的错误码来判断程序是否执行成功,并在程序中相应地处理这些错误。

通常可以使用if语句或switch语句来判断错误码,并进行相应的处理,比如输出错误信息、重新执行函数、跳出函数等。

另外,C语言中也提供了一些标准的异常处理函数,比如perror()函数和strerror()函数。

perror()函数可以输出一条描述错误原因的信息,通常这个信息包含了错误码对应的错误描述。

而strerror()函数可以根据给定的错误码返回一个描述错误原因的字符串。

这些函数可以帮助我们更方便地处理异常情况。

除了通过错误码和异常处理函数来处理异常,C语言中还提供了一种异常处理的机制,即setjmp()和longjmp()函数。

setjmp()函数用于设置一个标记点,可以在程序的任何地方调用longjmp()函数跳转到这个标记点,有点类似于goto语句,但更加安全。

这种机制适用于一些复杂的异常处理情况,比如在嵌套函数中处理异常。

在实际编码过程中,我们应该养成良好的异常处理习惯,尽量避免普通错误引起的程序崩溃或运行异常。

可以在关键函数中进行错误检查,并根据不同的错误情况进行相应的处理,比如重试、回滚、报错等。

同时,也要注意程序的健壮性和可靠性,避免出现一些潜在的异常情况。

总的来说,异常处理在C语言中是非常重要的,它可以帮助我们更好地处理程序中可能发生的错误或异常情况,提高程序的健壮性和可靠性。

通过合理地使用错误码、异常处理函数和异常处理机制,我们可以处理各种异常情况,并保证程序的正常运行。

希望大家在编程过程中能够重视异常处理,写出高质量的代码。

第5章 异常处理PPT教学课件

第5章 异常处理PPT教学课件

5.1 程序错误与处理 5.2 Java的异常处理
2020/12/10
1
5.1 程序错误与处理
5.1.1 程序错误、发现时刻及错误处理原则 5.1.2 面向过程与面向对象语言错误处理方式比较 5.1.3 Java的错误和异常
2020/12/10
2
5.1.1 程序错误、发现时刻及错误处理原则
else throw new Exception("IllegalAgeData"); //抛出异常
int a[] = new int[1];a[1] = 1; //产生数组下标越界异常 6. 数值格式异常NumberFormatException
int j = Integer.parseInt("abc"); //产生数值格式异常
2020/12/10
11
5.2.2 异常处理语句
1. t一ry个异常对象经历抛出、捕获及处理过程。创建一 2个. 异{常类对象的过程称为抛出(throw)异常;获得异 3常. 对象语的句过1程称/为/存捕在获潜(在c异atc常h)的异代常码;对异常对象执行 456相句... 应进}c{操行at作处ch的理(异过。常程类称为异处常理对异象常) ,异常对象由捕获它的语 78异.. 常}处语理句语2句语//法捕格获式到:异常并进行处理的代码 9. finally 10. { 11. 语句3 //最后必须执行的代码,无论是否捕获到
1. 面向过程语言
不进行数据范围检查。 采用if语句进行事先判断以防止出现错误。
2. 面向对象语言
—— 异常处理机制
从语法上看,异常处理语句将程序正常代码与错误 处理代码分开,使程序结构清晰,算法重点突出, 可读性强。

第05章 异常处理

第05章  异常处理

2.
当Java运行时系统接收到异常对象时,会寻找能处理这一异常 的代码并把当前异常对象交给其处理,这一过程称为捕获
(catch)异常。对异常对象执行相应的操作称为处理异常。
3.
如果Java运行时系统找不到可以捕获异常的方法,则运行时系 统将终止,相应的Java程序也将退出。
例5.2 MyJava5\Try2.java
《Java2程序设计实用教程(第2版)》
5.4 抛出异常
抛出异常的既可以是Java运行时系统;也可 以是程序员自己编写的代码。 只能是
1.使用throw语句抛出异常 throw <异常对象> 例5.4 MyJava5\Try4.java MyJava5\Try8.java MyJava5\Try5.java
catch (异常类 异常对象)
{
语句2 }
因此,多个catch语 若某一异常对象,有几个catch 类型匹配是指catch所处理的异常类 句的排序顺序是从 异常处理程序与他相匹配,那 catch语句可以有多个,分别处理不 型与生成的异常对象的类型完全一 子类到父类,从特 //捕获到异常并进行处理的代码 么执行第一个相匹配的catch异 同类的异常,但至少要有一个。 致或是它的超类。 殊到一般。 常处理程序。
(2)由调用方法处理异常 例5.5 程序MyJava5\Try6.java
3.由方法抛出异常交系统处理
《Java2程序设计实用教程(第2版)》
5.5 自定义异常类
【例5.7】 自定义异常类。 public class IllegalAgeException extends Exception //无效年龄异常类 { public IllegalAgeException(String s) public IllegalAgeException() } //捕获自定义异常类,而非Exception类 catch(IllegalAgeException e) { e.printStackTrace(); //显示异常栈跟踪信息 }

异常处理

异常处理

课程设计课程名:高级数据库应用项目名:异常处理学院:信息科学与工程学院专业:计算机科学与技术班级:计算机111组员:学号:1105010105姓名:刘志禹学号:1105010108姓名:任敏学号:1105010126姓名:刘琴指导老师:任树华日期:2014年5月18日1异常处理一:异常处理的概述:即使是写得最好的PL/SQL程序也会遇到错误或未预料到的事件。

一个优秀的程序都应该能够正确处理各种出错情况,并尽可能从错误中恢复。

任何ORACLE错误(报告为ORA-xxxxx形式的Oracle错误号)、PL/SQL运行错误或用户定义条件(不一写是错误),都可以。

当然了,PL/SQL编译错误不能通过PL/SQL异常处理来处理,因为这些错误发生在PL/SQL程序执行之前。

ORACLE 提供异常情况(EXCEPTION)和异常处理(EXCEPTION HANDLER)来实现错误处理。

异常情况处理(EXCEPTION)是用来处理正常执行过程中未预料的事件,程序块的异常处理预定义的错误和自定义错误,由于PL/SQL程序块一旦产生异常而没有指出如何处理时,程序就会自动终止整个程序运行.有三种类型的异常错误:1.预定义 ( Predefined )错误ORACLE预定义的异常情况大约有24个。

对这种异常情况的处理,无需在程序中定义,由ORACLE自动将其引发。

2.非预定义 ( Predefined )错误即其他标准的ORACLE错误。

对这种异常情况的处理,需要用户在程序中定义,然后由ORACLE自动将其引发。

3.用户定义(User_define) 错误程序执行过程中,出现编程人员认为的非正常情况。

对这种异常情况的处理,需要用户在程序中定义,然后显式地在程序中将其引发。

2异常处理部分一般放在 PL/SQL 程序体的后半部,结构为:EXCEPTIONWHEN first_exception THEN <code to handle first exception >WHEN second_exception THEN <code to handle second exception >WHEN OTHERS THEN <code to handle others exception >END;异常处理可以按任意次序排列,但 OTHERS 必须放在最后。

异常处理及操作流程ppt课件

异常处理及操作流程ppt课件

3、遇到异常不要慌张,检查现场现物,判断重要迅速处理,处乱不惊。
4、制定应急措施和再发防止措施。 应急措施具体作法:①明确发生异常时的群体。②将异常现象迅速通知有 关单位,并要求其参与处理。③对过程采取处置措施,使异常现象暂时控 制而不再恶化。④将异常群体选别,对不良品修理,调整或对人员作教育 训练。⑤将处置内容记入异常报告单。 再发防止具体作法:①检讨相关标准(ⅰ、是否有标准?标准明确了没 有?答案若是否定,则增订标准。ⅱ、是否遵守标准?若遵守标准而结果 又不好,则修改标准。ⅲ、标准了解了没有?若不了解则须培训标准。) ②对策愚巧化:若牵涉到要小心,注意、加强等因数,则尽量考虑使用防、 呆的方法。
操作方法有隐患 无标准化 指导书


管理
6、异常发生后操作步骤
6.1、检查现场现物,判断重要性,迅速处理。 6.2、联络关系部署 6.3、迅速确定,进行后工程品质确认; 6.4、进行对象范围把握和不良品排除(不良品分类识别,良品选出等) 6.5、问题严重时,向上司报告——等待指示; 6.6 、追查不合格品源头; 6.7 、联络前后工程,品管部; 6.8 、对发生工程进行对策处置; 6.9 、在此加合格标志,控制流出; 6.10、在合格品到来前点检,选出不合格品; 6.11 、工程内剩余工件及库存品也全数检选出; 6.12 、不合格品必需进行识别; 6.13 、修复是遵守规定。 ; 6.14、排除原因,启动设备; 6.15、研究对策和在发生防止,再次明确指导各工程异常是什么。
应急措施
如遇重大问题或需相关部门共同协商解 决的,由生管主导召开现场会。
应急措施由生管主导,生产、品管共同确认后 方可实施,重大品质问题延误交期的需计划部 确认。根据实际情况决定是否停产或转

异常处理作业指导书

异常处理作业指导书

异常处理作业指导书一、引言异常处理是指在系统运行过程中,出现意外情况或错误时所采取的相应措施。

异常处理的目的是保证系统的稳定性和可靠性,提高系统的容错能力和可维护性。

本文档旨在提供异常处理作业的详细指导,包括异常的定义、分类、处理流程以及常见异常案例的解决方法。

二、异常定义异常是指在程序执行过程中出现的错误或意外情况,导致程序无法正常继续执行的情况。

异常可以由系统错误、用户输入错误、外部环境变化等多种原因引起。

三、异常分类根据异常的性质和影响程度,可以将异常分为以下几类:1. 系统异常:由于硬件故障、网络中断等原因导致的系统崩溃或无法正常运行的异常。

2. 逻辑异常:由于程序设计错误、算法错误等原因导致的程序逻辑错误,例如除零错误、空指针引用等。

3. 数据异常:由于数据输入错误、数据传输错误等原因导致的数据异常,例如格式错误、数据丢失等。

4. 业务异常:由于业务规则变更、业务流程错误等原因导致的异常,例如订单重复、库存不足等。

四、异常处理流程异常处理的流程通常包括以下几个步骤:1. 异常检测:在程序中设置异常检测点,监测可能发生异常的代码段。

2. 异常捕获:当异常发生时,程序会捕获异常,并进行相应的处理。

3. 异常处理:根据异常的类型和具体情况,采取相应的处理措施,例如打印错误信息、回滚操作、重新尝试等。

4. 异常记录:将异常信息记录下来,便于后续分析和排查异常原因。

5. 异常恢复:在异常处理完成后,根据具体情况进行系统恢复或用户提示。

五、常见异常案例及解决方法1. 空指针异常:当程序试图访问空对象的属性或调用空对象的方法时,会引发空指针异常。

解决方法是在使用对象之前进行非空判断,或者使用try-catch块捕获异常并进行相应处理。

2. 数组越界异常:当程序试图访问数组中不存在的索引位置时,会引发数组越界异常。

解决方法是在访问数组之前进行索引范围检查,或者使用try-catch块捕获异常并进行相应处理。

第5章-异常处理ppt课件

第5章-异常处理ppt课件

}
5.2 异常的捕获与处理
C#程序设计教程——蒙祖强编著
5.2.4 try-catch-finally结构 可以看到,虽然catch块包含了一
例如: int n = 1, m = 1; try {
产生零除异常
条return语句,且执行该return语 句时也会立即结束当前函数的执 行,但在结束之前仍然会执行 finally块。这说明,只要程序进
{ Console.WriteLine("产生异常:{0}", e.Message); //处理异常
}
Console.ReadKey();
}
5.1 一个产生异常的简单程序 C#程序设计教程——蒙祖强编著
说明: 可能出现异常的代码放在try块中 处理异常的代码则放在catch块中 当程序在运行过程中产生异常时,则会转向执行 catch块中的代码,从而避免因异常的产生而导致 程序运行的非正常终止。
5.2 异常的捕获与处理
C#程序设计教程——蒙祖强编著
5.2.3 try-catch-catch结构
static void Main(string[] args)
{
int n, m;
n = 30000;
m = 30000;
try
{
n = 1 / (n - m);
int[,] a = new int[n, n];
{ Console.WriteLine("产生异常:{0}", e.Message);
互换?
} catch (ArithmeticException ee) //基类所在catch块(作用范围大)
{ Console.WriteLine("产生异常:{0}", ee.Message);

异常处理PPT课件

异常处理PPT课件
● InterruptedException(中断异常): 当前等待或睡眠线 程被其他线程中断时引发。
这类异常并非因设计或实现引起,是无法避免的。 但一般情况下,程序员应该提供相应的代码捕捉和 处理。
14
受检查的异常和不受检查的异常: 受检查的异常
Exception类及其非RuntimeException子类属于受 检查的异常;
9) System.out.println("After method.");
10) } 11) }
6
Exception in thread "main" ng.ArithmeticException: / by zero at ExceptionDivideBy0.method(ExceptionDivideBy0.java:4) at ExceptionDivideBy0.main(ExceptionDivideBy0.java:8)
一般情况下,程序员可不必理会这类异常,它们 虽然很严重,但很少发生。
12
(2) RuntimeException类及其子类: 表示设计或实现 方面的问题,例如:
● ArithmeticException(算术运算异常): 算术运算时发生 的异常情况,如整数相除,除数为零。 ● ClassCastException(强制类型转换异常): 把一个对象 引用转换成一个不合适的类型,如把一个对象引用转换成某 个子类类型。 ● NullPointerException(空引用异常): 需要对象引用时使 用了一个null引用。 ● ArrayIndexOutOfBoundsException(数组下标越界异常): 下标值超出了数组大小。 ● NumberFormatException(数字格式异常): 试图将非数 字格式字符串转换成数值。

如何处理异常范文

如何处理异常范文

如何处理异常范文异常处理是程序设计中的重要部分,它能够帮助我们优雅地处理一些意外情况,防止程序崩溃并提供更好的用户体验。

在本文中,我将介绍异常处理的概念和原则,并提供一些实用的异常处理技术。

一、异常处理概念和原则异常是在程序执行过程中发生的错误或意外情况。

这些异常可能是语法错误、逻辑错误和运行时错误等。

异常处理的目标是保护程序免受错误和意外情况的影响,并提供适当的错误信息。

异常处理应该能够捕获异常、处理异常并恢复正常执行。

异常处理的原则如下:1.避免异常:在编写代码时应该遵守良好的编码规范,避免可能导致异常的情况。

这包括使用合理的输入验证、避免空指针引用等。

2.捕获异常:使用try-catch语句捕获可能发生的异常。

try代码块中包含可能抛出异常的代码,catch代码块用于处理异常。

3.处理异常:处理异常的方式取决于具体情况。

可以打印错误信息、记录日志、回滚事务等。

异常处理应该根据具体情况进行,不能简单地忽略或屏蔽异常。

4.抛出异常:如果无法处理异常,可以将异常抛出给上层调用者处理。

这可以确保异常能够得到适当地处理,避免崩溃。

二、异常处理技术1.使用try-catch语句捕获异常。

try//可能抛出异常的代码} catch (Exception e)//处理异常的代码2.嵌套try-catch语句:可以在catch代码块中使用try-catch语句,以便处理多个级别的异常。

trytry//可能抛出异常的代码} catch (Exception e)//处理级别较低的异常}} catch (Exception e)//处理级别较高的异常3.finally代码块:finally代码块用于执行无论是否抛出异常都会执行的代码,比如释放资源、关闭文件等。

try//可能抛出异常的代码} catch (Exception e)//处理异常的代码} finally//无论是否抛出异常都会执行的代码public class MyException extends Exceptionpublic MyException(String message)super(message);}5.异常链:在处理异常时,可以将原始异常信息传递给上层调用者。

第05章 多线程与异常处理-Android应用程序设计(修订版)-张思民-清华大学出版社

第05章 多线程与异常处理-Android应用程序设计(修订版)-张思民-清华大学出版社
➢ 在Android系统中应用Java语言的异 常处理机制进行异常处理。
《Android应用程序设计》张思民编著
1、异常处理机制
➢ 在Android系统的异常处理中,引入了一些用 来描述和处理异常的Java类,每个异常类反映 一类运行错误,在类的定义中包含了该类异常 的信息和对异常进行处理的方法。当程序运行 的过程中发生某个异常现象时,系统就产生一 个与之相对应的异常类对象,并交由系统中的 相应机制进行处理,以避免系统崩溃或其他对 系统有害的结果发生,保证了程序运行的安全 性。这就是Android系统的异常处理机制。
《Android应用程序设计》张思民编著
4、阻塞状态
➢ 如果一个线程处于阻塞状态,那么该线程则无 法进入就绪队列。处于阻塞状态的线程通常必 须由某些事件唤醒。至于是何种事件,则取决 于阻塞发生的原因。例如:处于休眠中的线程 必须被阻塞固定的一段时间才能被唤醒;被挂 起或处于消息等待状态的线程则必须由一外来 事件唤醒。
《Android应用程序设计》张思民编著
2、异常类的定义
➢在Android系统中,把异常分为错误 (Error)与异常(Exception)两大类。
➢错误(Error)通常是指程序本身存在非 法的情形,这些情形常常是因为代码存 在着问题而引起的。
➢异常情况(Exception)则表示另外一种 “非同寻常”的错误。这种错误通常是 不可预测的。
《Android应用程序设计》张思民编著
5、死亡状态
➢死亡状态(或终止状态),表示线程已 退出运行状态,并且不再进入就绪队列。
toast=Toast.makeText(this, c, Toast.LENGTH_LONG); toast.setText(c); toast.show(); setContentView(txt1); } }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Exception in thread "main" ng.NullPointerException at chapter05.RaiseException.main(RaiseException.java:6)
3. Error/Exception层次图
Object Throwable Error 错误类 VirtualMachineError 虚拟机错误类 OutOfMemoryError 内存溢出错误类 StackOverflowError 栈溢出错误类 NoClassDefFoundError 类定义未找到错误类 ArithmeticException 算术异常类 NullPointerException 空对象异常类 ClassCastException 类型强制转换异常类 NegativeArraySizeException 负数组长度异常类 IndexOutOfBoundsException 序号越界异常类 ArrayIndexOutOfBoundsException 数组下标越界异常类 StringIndexOutOfBoundsException 字符串序号越界异常类

15
武汉理工大学信息学院《Java程序设计实用教程(第4版)》
7. 程序对错误与异常的三种处理方式


程序不能处理错误
程序应避免而不捕获的异常,如除数为0、 数组下标越界等。 必须捕获的异常,如网络连接失败

16
武汉理工大学信息学院《Java程序设计实用教程(第4版)》
5.2 异常处理措施
5.2.1 异常处理语句
Exception in thread "main" ng.StackOverflowError at chapter05.RaiseError.call(RaiseError.java:7) at chapter05.RaiseError.call(RaiseError.java:7)
int a[] = null;
a[0] = 1; String str = null; //对空数组中的元素进行操作
str.length() Object obj = new Object();
String str = (String) obj;
14
//调用空对象的方法
类型强制转换异常ClassCastException
public static void main(String[] args) { ArithmeticExceptionDemo obj = new ArithmeticExceptionDemo(); try { int result = obj.calculate(9, 0); System.out.println(result); } catch (Exception e) { System.err.println("发生异常:" + e.toString()); 如果没有 e.printStackTrace(); try…catch,最后 } System.out.println("end"); 的end能否输出 } 呢? }
引发
单元
catch
程序控制
异常
执行 catch 后程序 继续正常运行
20
try 和 catch 块 2-2

public class ArithmeticExceptionDemo { public ArithmeticExceptionDemo() { } try 和 catch 块的用法 private static int calculate(int i, int j) { return i / j; }
int a[] = new int[1]; a[1] = 1;

字符串序号越界异常 StringIndexOutOfBoundsException
"abc".charAt(-1) 数值格式异常NumberFormatException int j = Integer.parseInt("abc");
• • • •
对负数开平方根
空指针访问 试图读取不存在的文件
网络连接中断
2. Java语言是安全的

Java语言提供严密的语法规则。


Java在编译和运行时严格检查错误。
Java提供异常处理机制。
Java提供内存自动管理方式。
6
武汉理工大学信息学院《Java程序设计实用教程(第4版)》
3. 理解异常的概念-什么是异常?
public class Exception extends Throwable { public Exception() public Exception(String s) }
13 武汉理工大学信息学院《Java程序设计实用教程(第4版)》
6. RuntimeException运行异常类
算术异常ArithmeticException:除数为0 空对象异常NullPointerException
• 在运行时发生的错误 异常情况 public class ExceptionRaised { public ExceptionRaised() { } 异常 public int calculate( int operand1, int operand2) { int result = operand1 / operand2; return result; 程序突然终止并将控制交 } 给操作系统 public static void main(String[] args) { ExceptionRaised obj = new ExceptionRaised(); int result = obj.calculate(9, 0); System.out.println(result); } }
12
文件结束 线程中断
5. 异常类定义
public class Throwable implements Serializable { public Throwable() public Throwable(String message) public String getMessage() //获得异常信息 public String toString() //获得异常对象的描述信息 public void printStackTrace() //显示异常栈跟踪信息 }

2
5.1 异常处理基础
5.1.1 异常处理机制的必要性
5.1.2 错误和异常
3
武汉理工大学信息学院《Java程序设计实用教程(第4版)》
5.1.1 异常处理机制的必要性

面向过程语言错误处理方式的缺陷
不进行范围检查采用if语句进行事先判断以防止出现错误。

面向对象语言异常处理的思想

将程序正常代码与错误处理代码分开。
使程序具有处理错误的能力。
4
武汉理工大学信息学院《Java程序设计实用教程(第4版)》
1. 异常不可避免


不要指望你的程序永远不会出错
Java程序运行过程中的异常事件可分为两类:
错误(Error):JVM系统内部错误、资源耗尽等严重情况 异常(Exception): 其它因编程错误或偶然的外在因素导致的 一般性问题,例如:
5.2.2 抛出异常
5.2.3 自定义异常类
17
武汉理工大学信息学院《Java程序设计实用教程(第4版)》
1. 异常处理机制
在 Java 应用程序中,异常处理机制为:抛出异常,捕捉异常。
抛出异常:当一个方法出现错误引发异常时,方法创建异常 对象并交付运行时系统。 捕获异常:在方法抛出异常之后,运行时系统将转为寻找合 适的异常处理器(exception handler)。潜在的异常处理器是 异常发生时依次存留在调用栈中的方法的集合。
2. 异常例子
public class RaiseException { public static void main(String[] args) { java.util.Date d = null; System.out.println(d.getTime()); System.out.println(calclate(10,0)); } private static double calclate(int i, int j) { return i/j; } }
LinkageError 链接错误类 java.awt.AWTError 图形用户界面错误类
Exception 异常类 NosuchMethodException 无此方法异常类 UnsupportedOperationException 不支持该操作异常类 InterruptedException 线程中断异常类 java.awt.AWTException 图形用户界面异常类 java.awt.FontFormatException 字体格式异常类
4. Java异常类
异常
Exception RuntimeException ArithmeticException IllegalArgumentException ArrayIndexOutOfBoundException NullPointerException ClassNotFoundException NumberFormatException IOException FileNotFoundException
说明
异常层次结构的根类 许多 ng 异常的基类 算术错误情形,如以零作除数 方法接收到非法参数 数组大小小于或大于实际的数组大小 尝试访问 null 对象成员 不能加载所需的类
数字转化格式异常,比如字符串到 float 型数字 的转换无效
相关文档
最新文档