第6章 异常的捕获及处理 6.1 异常简介 6.2 异常类的继承结构 6.3 异常处理机制 6.4 异常处理 6.5 本章小结.

Slides:



Advertisements
Similar presentations
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
Advertisements

第 7 章 异常处理. 立体化教材计算机系列 — 《 Java 程序设计》 2 目 录 重点与难点点拨 经典练习题 异常处理机制 异常.
面向侧面的程序设计 方林博士 本文下载地址:
第四章 类、对象和接口.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
Java程序设计教程 第一讲 Java概述.
Java的程式架構與基本觀念 Java語言的歷史 Java程式的開發環境 Java程式的架構 輸出與輸入物件之使用 工具使用方法介紹
四資二甲 第三週作業 物件導向程式設計.
Exception子类的继承关系 Exception ClassNotFoundException
Java程序设计 第6章 异 常 处 理.
第二章 JAVA语言基础.
Ch07 介面與多重繼承 物件導向程式設計(II).
第14章 c++中的代码重用.
第三章 控制结构.
程式設計實作.
第5章 异常处理 王德俊 上海交通大学继续教育学院.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
例外處理(Exception Handling)
Java基础 JavaSE异常.
第七章 异常.
抽象类/接口 与异常处理机制 主讲:赖国荣 QQ:
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
程式設計實作.
第四章 基本輸出入 Java應用程式的輸出入介面有三種,分別是命令提示字元視窗、AWT元件、及Swing元件。本單元先介紹命令提示字元視窗,AWT請看第16、17章,Swing請看第20章。 輸入 輸出.
第 14 章 例外處理.
Java语言程序设计 第五部分 Java异常处理.
第14讲 异常处理 1/.
王豐緒 銘傳大學資訊工程學系 問題:JAVA 物件檔輸出入.
第三章 流程控制與例外處理 資訊教育研究室 製作 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
例外處理與 物件序列化(Exception Handling and Serialization of Objects)
檔案讀寫與例外處理 (File IO and Exception Handling)
9.1 程式偵錯 9.2 捕捉例外 9.3 自行拋出例外 9.4 自定例外類別 9.5 多執行緒
异常及处理.
C/C++/Java 哪些值不是头等程序对象
第七章 操作符重载 胡昊 南京大学计算机系软件所.
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
辅导课程八.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
$9 泛型基础.
第7章 异常处理.
第二章 Java基本语法 讲师:复凡.
分裂对象模型 C++ otcl.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第二章 Java语法基础.
第二章 Java基本语法 讲师:复凡.
Chapter 18 使用GRASP的对象设计示例.
辅导课程十五.
龍老師我不會Debug QQ.
第二章 Java基本语法 讲师:复凡.
第二章 Java基本语法 讲师:复凡.
Java程序设计 第17章 异常和断言.
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
3.7 Java的异常处理机制.
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
第6章 异常处理 陈哲 副教授 南京航空航天大学 计算机科学与技术学院.
第4讲 类和对象、异常处理 ggao.
判斷(選擇性敘述) if if else else if 條件運算子.
第二章 Java基础语法 北京传智播客教育
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
第6章 继承和多态 伍孝金
Summary
Presentation transcript:

第6章 异常的捕获及处理 6.1 异常简介 6.2 异常类的继承结构 6.3 异常处理机制 6.4 异常处理 6.5 本章小结

6.1 异常简介 在程序运行过程中,可能会遇到一些非正常的状况,这种非正常状况对程序来说是一种异常 例如:除以零、数组越界、试图打开一个根本不存在的文件等。 后果:如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失。所以在程序的设计中必须考虑到各种异常的发生,并做好相应的处理。 一个好的程序,整体的1/3是在处理要完成的真正任务,而2/3是在处理异常,这样的程序才是最强壮的。

6.2 异常类的继承结构 Object Throwable RuntimeException …… Error Exception IOException 异常类 查阅API文档

6.3 异常处理机制 两种处理异常的机制 ①捕获异常 ②抛出异常 异常类对象的产生:程序产生异常时,系统(JVM)会自动实例化一个异常类的对象,对象中保存了具体的异常描述信息。 try——catch——finally模型 throw 、throws

6.4 异常处理 定义类 创建对象 初始化 SUN 程序员 异常类 JVM 处理异常时编程人员做什么? ①给异常类对象起名字 ②抓它 Java库类中的类 SUN 程序员 用户创建的类 异常类 JVM 出错的方法 处理异常时编程人员做什么? ①给异常类对象起名字 ②抓它 ③处理它 ④抛它

1.异常范例ExceptionDemo01.java public class ExceptionDemo01{ public static void main(String args[]){ System.out.println("******* 计算开始 *******") ; int i = 10 ; int j = 0 ; int temp = i / j ; System.out.println("两个数字相除的结果:" + temp) ; System.out.println("******* 计算结束 *******") ; }

2.异常处理try-catch-finally模型 可能出现异常的语句; }catch(异常类1 异常对象){ 异常1的处理语句; }catch(异常类2 异常对象){ 异常2的处理语句; }… finally{ 一定要运行的语句; } 关键字的作用 try: 捕捉异常 catch: 处理异常 finally: 异常的统一出口 范例ExceptionDemo02.java

public class ExceptionDemo02{ public static void main(String args[]){ System.out.println("****** 计算开始 ********") ; int i = 10 ; int j = 0 ; try{ int temp = i / j ; // 此处产生了异常 System.out.println("两个数字相除的结果:" + temp) ; } catch ( ArithmeticException ae ){ System.out.println("出现异常了:" + ae) ; } System.out.println("******* 计算结束 *********") ;

验证finally的作用:异常的统一出口 public class ExceptionDemo03{ public static void main(String args[]){ System.out.println("******** 计算开始 *******") ; int i = 10 ; int j = 2 ; try{ int temp = i / j ; System.out.println("两个数字相除的结果:" + temp) ; }catch(ArithmeticException ae){ System.out.println("出现异常了:" + ae) ; }finally{ System.out.println("不管是否出现异常,都执行此代码") ; } System.out.println("******** 计算结束 *******") ;

多重catch处理异常 程序在开发中不会只存在一个异常,肯定会同时存在多个异常。此时就需要使用多个catch语句进行处理。 例:使用键盘输入两个数据,进行除法操作。 分析: 没有输入参数或个数不够——数组超出绑定异常 输入的参数不是数字——数字格式化异常 除数为零——算术异常 …… 范例ExceptionDemo04.java

public class ExceptionDemo04{ public static void main(String args[]){ int i , j ; try{ String str1 = args[0] ; // 接收第一个参数 String str2 = args[1] ; // 接收第二个参数 i = Integer.parseInt( str1 ); j = Integer.parseInt( str2 ); int temp = i / j ; // 此处产生了异常 System.out.println(“相除的结果:” + temp); }catch( ArithmeticException e){ System.out.println("算术异常:" + e) ; }catch( NumberFormatException e){ System.out.println("数字转换异常:" + e); }catch( ArrayIndexOutOfBoundsException e){ System.out.println("数组越界异常:" + e) ; }catch( Exception e){ System.out.println("异常:" + e) ;} System.out.println("****** 计算结束 *****") ; }}

3.异常信息的输出 直接打印异常对象 System.out.println(e) 使用Exception类提供的一个方法 printStackTrace( ) (开发中常用专门打印异常信息)

public class ExceptionDemo05{ public static void main(String args[]){ System.out.println("****** 计算开始 ********") ; int i = 10 ; int j = 0 ; try{ int temp = i / j ; // 此处产生了异常 System.out.println("相除的结果:" + temp) ; }catch( Exception e){ e. printStackTrace(); } System.out.println("******* 计算结束 *********") ;

4.throw、throws throws:如果一个方法引发了异常,但方法本身并不对该异常进行处理,而是交给被调用处处理。那么该方法就要用throws关键字声明。 throw:表示在方法中手工抛出一个异常。 在一般的开发中try…catch…finally、throw、throws联合使用的情况是最多的。{ }

范例ThrowsDemo.java class Math{ public int div( int i , int j ) throws Exception{ int temp = i / j ; // 此处有可能出现异常 return temp ; } public class ThrowsDemo{ public static void main(String args[]){ Math m = new Math() ; // 实例化Math类对象 try{ System.out.println("除法操作:" + m.div(10,0)) ; }catch( Exception e){ e.printStackTrace() ; // 打印异常

范例ThrowDemo.java public class ThrowDemo{ public static void main(String args[]){ try{ throw new Exception("自己抛着玩的。") ; }catch(Exception e){ System.out.println(e) ; }

5.实战 设计一个能进行两个整数相除的方法. 要求:①在计算开始处打印“计算开始”信息 ②在计算结束处打印“计算结束”信息 ③如有异常交给调用处处理 范例ThrowDemo03.java

class Math{ public int div(int i , int j) throws Exception{ System.out.println("***** 计算开始 *****") ; int temp = 0 ; // 定义局部变量 try{ temp = i / j ; // 此处有可能出现异常 }catch ( Exception e){ throw e ; }finally{ System.out.println("***** 计算结束 *****") ; } return temp ; }} public class ThrowDemo03{ public static void main(String args[]){ Math m = new Math() ; try{ System.out.println("除法操作:" + m.div(10,0)) ; }catch(Exception e){ System.out.println("异常产生:" + e) ; }

6.5 本章小结 1.异常是导致程序中断运行的一种指令流。当异常发生时,如果没有进行处理,程序将会中断执行。 2.异常可以使用try…catch进行处理,也可以使用try…catch…finally进行处理。在try语句中捕捉异常,然后在catch中处理异常,finally作为异常的统一出口,不管是否发生异常都要执行此段代码。

6.5 本章小结 3.异常的最大父类是Throwable,其分为两个子 类,分别是Exception、Error。Exception表示程序可以处理的异常;而Error表示JVM错误, 一般不由程序开发人员处理。 4.发生异常后,JVM会自动产生一个异常类的实例化对象,并匹配相应的catch语句中的异常类型,也可以利用对象的向上转型关系直接捕获Exception。 5.throws用在方法声明处,表示本方法不处理异常,交给被调用处处理;throw表示在方法中手工抛出一个异常。