异常PPT课件
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
异常(Exception)
• 任何一种语言设计的程序在运行时都会出错:除数 为零、数组下标越界、文件不存在、内存不足等。
传统的程序设计思想: 从键盘上读入一个int数据。 ……. int j; sacnf(“%d” , &j); …… 如果用户不输入int数据呢? 系统可能会终止程序的
运行。
int j, k=1; k--; …… j=50/k; …… 会引起除法错的错误,系统会终止程序的运行 改进: if(k!=0){
– 运行异常:指由程序运行环境问题造成的程序 异常终止,如打开不存在的文件进行读操作、 程序执行了除以0的操作。
– (可恢复)的Java运行时错误称为异常。
• Java异常是一个描述在代码段中发生的异常 (也就是出错)情况的对象。
• 当异常情况发生,一个代表该异常的对象被创 建并且在导致该错误的方法中被引发 (throw)。该方法可以选择自己处理异常或 传递该异常。
• The resulting code is clear, easy to read, and easy to maintain.
• Java的异常处理机制
– 能够把程序的正常处理逻辑和异常处理逻辑分 开表示,使得程序的异常处理结构比较清晰。 即我们尝试着去做一些事情,对于程序运行可 能发生的每一个错误,我们都有一个相应的代 码块去处理它。
• JVM抛出异常通知应用程序发生了错误,目的是为了 给应用程序提供从问题中恢复的机会。
生成的异常对象 将传递给java运 行时系统,异常 的产生和提交过 程称为抛出异常
Java异常处理通过5个关键字控制:
• try、catch、throw、throws和 finally。
• 下面讲述它们如何工作的。程序声明了你想要的 异常监控包含在一个try块中。如果在try块中发生 异常,它被抛出。你的代码可以捕捉这个异常 (用catch)并且用某种合理的方法处理该异常。 系统产生的异常被Java运行时系统自动引发。手 动引发一个异常,用关键字throw。任何被引发方 法的异常都必须通过throws子句定义。任何在方 法返回前绝对被执行的代码被放置在finally块中。
j=50/k; } else{ printf(“除数为0,不能处理!”); }
• 传统程序面对错误的发生:
– 错误检测和处理代码混杂在一起,导致程序代码难以理解; – 层层的错误检测导致程序效率降低; – 层层的错误处理代码导致程序庞大;可读、可维护性不强。 – 依赖程序员自身的觉悟(警觉性),而非语言本身的语法要
• 两种情况下,该异常被捕获(catch)并处理。 异常可能是由Java运行时系统产生,或者是由 你的手工代码产生。被Java引发的异常与违反 语言规范或超出Java执行环境限制的基本错误 有关。手工编码产生的异常基本上用于报告方 法调用程序的出错状况。
异常的产生有很多种原因:设计者的疏忽、使用者 的误操作、软硬件错误等。
求。如果程序员本身不够警---通常因为程序太赶----错误 处理便容易被忽略。
• 这种错误的处理方式在大型、稳固、可维护的程序发 展上是一个重大束缚。
• 程序的错误通常包括:
– 语法错误:指程序的书写不符合语言的语法规 则,这类错误可由编译程序发现。
– 逻辑错误:指程序设计不当造成程序没有完成 预期的功能,这类错误通过测试发现。
• 为错误情景的恢复提供了一种可行方案,我们不再 只能选择退出(那是一种逃避),如今可以校正事情, 恢复程序的正确执行,这种表现是稳健而强固的程 序的特征。
Exception Objects
• In Java, an exception is an object that describes an abnormal situation. When an abnormal situation occurs, a method can create an exception object and then throw it.
下面是一个异常处理块的通常形式: try {
// block of code to monitor for errors } catch (ExceptionType1 exOb) {
// exception handler for ExceptionType1 } catch (ExceptionType2 exOb) {
int d, a; try { // monitor a block of code.
d = 0; a = 42 / d; System.out.println("This will not be printed."); } catch (ArithmeticException e) {
• 如果执行try代码块时JVM抛出一个异常,try代码块 的执行在产生异常的那行代码中止,然后JVM从上到 下检查catch关键字后声明的异常类型和抛出的异常 类型匹配的catch子句(找到?找不到?)。
• For example SquareRoot.java
class Exc2 { public static void main(String args[ ]) {
// exception handler for ExceptionType2 }
... finally {
// block of code to be executed before try block ends }
这里,ExceptionType 是发生异常的类型。
• 如果try代码块中的代码在执行时没有异常发生,所 有的catch代码块会被跳过,并继续执行最后一个 catch代码块之后的程序代码;
导致程序运行异常的错误是可以预料的,但它是无 法避免的。为了保证程序的健壮性(robust),必须在 程序中对它们进行预见性处理。一个好的软件应该可 以正确的处理程序中产生的异常。
• Exception handling in Java is a mechanism that allows failures to be handled outside the normal flow of the code.
• 任何一种语言设计的程序在运行时都会出错:除数 为零、数组下标越界、文件不存在、内存不足等。
传统的程序设计思想: 从键盘上读入一个int数据。 ……. int j; sacnf(“%d” , &j); …… 如果用户不输入int数据呢? 系统可能会终止程序的
运行。
int j, k=1; k--; …… j=50/k; …… 会引起除法错的错误,系统会终止程序的运行 改进: if(k!=0){
– 运行异常:指由程序运行环境问题造成的程序 异常终止,如打开不存在的文件进行读操作、 程序执行了除以0的操作。
– (可恢复)的Java运行时错误称为异常。
• Java异常是一个描述在代码段中发生的异常 (也就是出错)情况的对象。
• 当异常情况发生,一个代表该异常的对象被创 建并且在导致该错误的方法中被引发 (throw)。该方法可以选择自己处理异常或 传递该异常。
• The resulting code is clear, easy to read, and easy to maintain.
• Java的异常处理机制
– 能够把程序的正常处理逻辑和异常处理逻辑分 开表示,使得程序的异常处理结构比较清晰。 即我们尝试着去做一些事情,对于程序运行可 能发生的每一个错误,我们都有一个相应的代 码块去处理它。
• JVM抛出异常通知应用程序发生了错误,目的是为了 给应用程序提供从问题中恢复的机会。
生成的异常对象 将传递给java运 行时系统,异常 的产生和提交过 程称为抛出异常
Java异常处理通过5个关键字控制:
• try、catch、throw、throws和 finally。
• 下面讲述它们如何工作的。程序声明了你想要的 异常监控包含在一个try块中。如果在try块中发生 异常,它被抛出。你的代码可以捕捉这个异常 (用catch)并且用某种合理的方法处理该异常。 系统产生的异常被Java运行时系统自动引发。手 动引发一个异常,用关键字throw。任何被引发方 法的异常都必须通过throws子句定义。任何在方 法返回前绝对被执行的代码被放置在finally块中。
j=50/k; } else{ printf(“除数为0,不能处理!”); }
• 传统程序面对错误的发生:
– 错误检测和处理代码混杂在一起,导致程序代码难以理解; – 层层的错误检测导致程序效率降低; – 层层的错误处理代码导致程序庞大;可读、可维护性不强。 – 依赖程序员自身的觉悟(警觉性),而非语言本身的语法要
• 两种情况下,该异常被捕获(catch)并处理。 异常可能是由Java运行时系统产生,或者是由 你的手工代码产生。被Java引发的异常与违反 语言规范或超出Java执行环境限制的基本错误 有关。手工编码产生的异常基本上用于报告方 法调用程序的出错状况。
异常的产生有很多种原因:设计者的疏忽、使用者 的误操作、软硬件错误等。
求。如果程序员本身不够警---通常因为程序太赶----错误 处理便容易被忽略。
• 这种错误的处理方式在大型、稳固、可维护的程序发 展上是一个重大束缚。
• 程序的错误通常包括:
– 语法错误:指程序的书写不符合语言的语法规 则,这类错误可由编译程序发现。
– 逻辑错误:指程序设计不当造成程序没有完成 预期的功能,这类错误通过测试发现。
• 为错误情景的恢复提供了一种可行方案,我们不再 只能选择退出(那是一种逃避),如今可以校正事情, 恢复程序的正确执行,这种表现是稳健而强固的程 序的特征。
Exception Objects
• In Java, an exception is an object that describes an abnormal situation. When an abnormal situation occurs, a method can create an exception object and then throw it.
下面是一个异常处理块的通常形式: try {
// block of code to monitor for errors } catch (ExceptionType1 exOb) {
// exception handler for ExceptionType1 } catch (ExceptionType2 exOb) {
int d, a; try { // monitor a block of code.
d = 0; a = 42 / d; System.out.println("This will not be printed."); } catch (ArithmeticException e) {
• 如果执行try代码块时JVM抛出一个异常,try代码块 的执行在产生异常的那行代码中止,然后JVM从上到 下检查catch关键字后声明的异常类型和抛出的异常 类型匹配的catch子句(找到?找不到?)。
• For example SquareRoot.java
class Exc2 { public static void main(String args[ ]) {
// exception handler for ExceptionType2 }
... finally {
// block of code to be executed before try block ends }
这里,ExceptionType 是发生异常的类型。
• 如果try代码块中的代码在执行时没有异常发生,所 有的catch代码块会被跳过,并继续执行最后一个 catch代码块之后的程序代码;
导致程序运行异常的错误是可以预料的,但它是无 法避免的。为了保证程序的健壮性(robust),必须在 程序中对它们进行预见性处理。一个好的软件应该可 以正确的处理程序中产生的异常。
• Exception handling in Java is a mechanism that allows failures to be handled outside the normal flow of the code.