Exception子类的继承关系 Exception ClassNotFoundException

Slides:



Advertisements
Similar presentations
第 7 章 异常处理. 立体化教材计算机系列 — 《 Java 程序设计》 2 目 录 重点与难点点拨 经典练习题 异常处理机制 异常.
Advertisements

单元二:面向对象程序设计 任务二:借书卡程序设计.
第四章 类、对象和接口.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
JAVA 编 程 技 术 主编 贾振华 2010年1月.
Java程序设计教程 第一讲 Java概述.
四資二甲 第三週作業 物件導向程式設計.
面向对象的程序设计(一).
第二章 JAVA语言基础.
第二部分 Java语言基础篇 第4章 Java语言与面向对象 (之一).
Ch07 介面與多重繼承 物件導向程式設計(II).
第九章 字符串.
Ch02 視窗Swing套件 物件導向系統實務.
Android + JUnit 單元測試 建國科技大學資管系 饒瑞佶 2012/8/19V4.
程式設計實作.
第5章 异常处理 王德俊 上海交通大学继续教育学院.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
2018/11/15 面向对象与多线程综合实验-GUI设计 教师:段鹏飞.
物件導向程式設計 (Object-Oriented rogramming)
例外處理(Exception Handling)
Java基础 JavaSE异常.
第七章 异常.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
本單元介紹何謂變數,及說明變數的宣告方式。
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
程式設計實作.
第 14 章 例外處理.
Java语言程序设计 第五部分 Java异常处理.
第6章 异常的捕获及处理 6.1 异常简介 6.2 异常类的继承结构 6.3 异常处理机制 6.4 异常处理 6.5 本章小结.
第14讲 异常处理 1/.
Java程序设计 第9章 继承和多态.
第三章 流程控制與例外處理 資訊教育研究室 製作 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
辅导课程六.
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
第5章 异常处理 王德俊 上海交通大学继续教育学院.
9.1 程式偵錯 9.2 捕捉例外 9.3 自行拋出例外 9.4 自定例外類別 9.5 多執行緒
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
异常及处理.
Java程序设计 第2章 基本数据类型及操作.
CH04 視窗中元件排排坐 物件導向系統實務.
C/C++/Java 哪些值不是头等程序对象
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
《JAVA程序设计》 语音答疑 辅导老师:高旻.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第二章Java基本程序设计.
第7章 异常处理.
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第二章 Java语法基础.
第二章 Java基本语法 讲师:复凡.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
辅导课程十五.
第二章 Java基本语法 讲师:复凡.
第二章 Java基本语法 讲师:复凡.
Java程序设计 第17章 异常和断言.
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
3.7 Java的异常处理机制.
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
第4讲 类和对象、异常处理 ggao.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
判斷(選擇性敘述) if if else else if 條件運算子.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
第二章 Java基础语法 北京传智播客教育
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
Presentation transcript:

Exception子类的继承关系 Exception ClassNotFoundException ClassNotSupportedException IllegalAccessException InstantiationException InterruptedException NoSuchMethodException RuntimeException ArithmeticException ArrayStoreException ClassCastException IllegalArgumentException

Exception子类(续) IllegalThreadStateException NumberFormatException IllegalMonitorStateException IndexOutOfBoundsException ArrayIndexOutOfBoundsException StringIndexOutOfBoundsException NegativeArraySizeException NullPointerException SecurityException

13周-上机作业1 设计一个java程序,有数组a()={10,20,30,40,50};b()={0,2,30};求数组c()=a[i]/b[i],i=0-4.请处理此程序所发生的任何异常(ArrayIndexOutofBoundsException) (ArithemeticException)

1关于异常的含义,下列描述正确的是 A 程序编译错误 B 程序语法错误 C 程序自定义的异常 D 程序编译或者运行时发生的异常事件 D

A 5 对于try和catch子句的排列方式,下列哪一项是正确的? A 子类异常在前,父类异常在后 B 父类异常在前,子类异常在后 D 父类异常和子类异常不能同时出现在同一个类中 A

使用null对象引用方法或变量将产生该异常 7 关于java语言中常用的异常类的说法,错误的一个是 A在不合法的数学运算发生时,会出现ArithmeticException类异常 B 如果字符串转换成数字,需要准备处理NumberFormatException异常 C 如果使用非法的索引值来访问数组,ArrayIndexOutOfBoundsException异常会被抛出 D如果指针变量为空,NullPointException异常就会被抛出 D Java中没有指针 使用null对象引用方法或变量将产生该异常

C public class test14 { public static void main(String[] args) { int x=0; int y=2/x; int z[]={1,2,4,6}; int p=z[4]; } 14 运行下列程序,将产生什么异常? A ArrayIndexOutOfBoundsException B NumberFormatException C ArithmeticException D ArithmeticException和ArrayIndexOutOfBoundsException C

抛出异常语句 通常情况下,异常是由系统自动捕获的。但程序员也可以自己通过throw语句抛出异常。throw语句的格式为: throw new 异常类名(信息) 其中异常类名为系统异常类名或用户自定义的异常类名,“信息”是可选信息。如果提供了该信息,toString()方法的返回值中将增加该信息内容。

【任务8-3】抛出异常 注意异常类型的捕获顺序 public class Deposit { public static double discount(int n) { if (n<0){ throw new IllegalArgumentException("n应该为正整数");} return n*0.08; } public static void main(String args[]){ try { int i=Integer.parseInt(args[0]); System.out.println("用户消费"+i+"元,可优惠"+discount(i)+"元"); catch(ArrayIndexOutOfBoundsException e1){ System.out.println("异常:没有输入参数"); catch(NumberFormatException e2){ System.out.println("异常:参数不能转换为整型"); catch (IllegalArgumentException e3){ System.out.println("自定义异常:"+e3.toString()); finally{ System.out.println("程序结束"); }}} 【任务8-3】抛出异常 注意异常类型的捕获顺序

异常:没有输入参数 程序结束 异常:参数不能转换为整型 程序结束 自定义异常:java.lang.IllegalArgumentException: n应该为正整数 程序结束 用户消费800元,可优惠64.0元 程序结束

抛出异常选项 在有些情况下,一个方法并不需要处理它所生成的异常,而是向上传递,由调用该方法的其他方法来捕获该异常,这时就要用到throws子句。 为了明确指出某方法不捕获某类异常,而让调用该方法的其他方法捕获该类异常,可以在申明该方法的时候,使用throws语句 其格式如下: 返回类型 方法名([参数表]) throws 异常类型名 { 声明部分 }

举例:考试过程异常情况 监考老师处理不了怎么办? 举例:考试过程异常情况 监考老师处理不了怎么办? 向上级报告! 在java中 :抛出异常 自己不处理,由调用它的函数来处理 public static double discount(int n) { if (n<0){ throw new IllegalArgumentException("n应该为正整数");} return n*0.08; }

自定义异常类 自定义异常类可以通过继承Exception类来实现。其一般形式为: { 异常类体; } class 自定义异常类名 extends Exception { 异常类体; }

【任务8-4】在程序中自定义一个异常 类并使用它 【任务8-4】在程序中自定义一个异常 类并使用它 import javax.swing.JOptionPane; class PasswdException extends Exception{ PasswdException(){ System.out.println(" 密码不能小于六位"); } public class Passwd { public static int x=10000; public static boolean checkpasswd(String passwd) throws PasswdException{ if(passwd.length()<6){ throw new PasswdException(); else return true; //main函数 密码不能小于六位 ch8.eg8_4.PasswdException 程序结束 密码已经设置 程序结束

public static void main(String args[]){ try{ String passwd =JOptionPane.showInputDialog(" 请设置初始密码"); checkpasswd(passwd); System.out.println("密码已经设置"); } catch(PasswdException e){ System.out.println(e); finally{ System.out.println("程序结束");

该任务中自己定义了一个异常如下: class PasswdException extends Exception{ PasswdException(){ System.out.println(" 密码不能小于六位"); }

综合演示:使用已有的bank1类自定义异常并使用 步骤 1:创建异常类OverDrawnException———当取出钱后余额小于10的情况。 该类继承Excoption类,并覆盖该类的public String toString ()方法,返回提示信息 “余额不能为负数” 2: 创建异常类DepositException———当无效钱数(小于0)存入时。 该类继承Excoption类,并覆盖该类的public String toString ()方法,返回提示信息“存入款项不能为负数” package ch6.ex6_8; public class Bank { String countNo; //帐号 String address;//地址 double balance;//余额 static double min=10;//最小存款 String name;//储户姓名 Bank (String aCountNo,String aName,String aAddress,double aBalance){ countNo=aCountNo; name=aName; balance=aBalance; address=aAddress; } // 存款 void save(double num){ balance=balance+num; // 取款 boolean take(double num){ if ((balance-num)<min){ return false; }else { balance=balance-num; return true; // 查询 double query(){ return balance; public static void main(String[] args){ Bank b1=new Bank("001","张三","天源路789号",200); b1.save(90.00); System.out.println(b1.query()); if (b1.take(290)) else System.out.println("取款不成功,最小保留"+Bank.min+"元"); 提示:take方法要求返回boolean值的语句应该放在catch语句的最后

3 在Bank1类的boolean take(double num)方法中,如果发现(余额-num<=10) 则抛出一个OverDrawnException,并在take方法在进行捕获,捕获后打印异常的toString返回的信息 4 在void save(double num)方法中,发现num小于0,则抛出一个DepositException异常,并在方法头中申明take方法自身不处理该异常,由调用它的函数处理(提示:TestBank1类的main函数处理) 5 写一个测试程序,写代码实现下列过程: 新建一个帐户,开户信息为【“001”,“张三”,“天源路789号”,200】, 存入90元,再存入-90元,取款290元。 捕获所有可能发生异常

14周上机作业1 处理备注中 计算器 中所有可能出现的异常。 1:输入的操作数为字符串的异常 2: 第二个操作数为0时候出现的算数异常 2: 第二个操作数为0时候出现的算数异常 3:自定义异常类ex1:如果第一个操作数大于100认为是一种越界异常, 写一个方法去判断,如果发现该异常,则抛出一个ex1类的异常对象,由main函数去捕获 import java.awt.*; implements ActionListener public class work2 extends Frame import java.awt.event.*; static Button but1 ,but2,but3,but4; static TextField txt1,txt2,txt3; { this.setLayout(new GridLayout(4,2)); this.setBounds(300, 200, 300, 200); work2(){ txt2=new TextField(25); this.add(txt1); txt1=new TextField(25); but2=new Button("-"); but1=new Button("加"); this.add(txt2); this.add(but1); but4=new Button("/"); but3=new Button("*"); this.add(but4); this.add(but3); this.add(but2); but3.addActionListener(this); but2.addActionListener(this); but1.addActionListener(this); this.add(txt3); txt3=new TextField(25); but4.addActionListener(this); public static void main(String[] args) { } this.setVisible(true); new work2(); public void actionPerformed(ActionEvent arg0) { @Override // TODO Auto-generated method stub int a=Integer.parseInt(txt1.getText()); if (arg0.getSource()==but1){ int b=Integer.parseInt(txt2.getText()); ; txt3.setText(tmp); String tmp=String.valueOf(c); int c=a+b; if (arg0.getSource()==but2){ int c=a-b; if (arg0.getSource()==but3){ int c=a*b; if (arg0.getSource()==but4){ int c=a/b;  

2抛出异常时,应该使用哪个子句 A throw B catch C finally D throws A

3自定义异常时,可通过对下列哪一项进行继承? A Error类 B Applet类 C Exception类 D AssertionError类 C

4 当方法产生该方法无法确定如何处理的异常时,应该如何处理? A 申明异常 B 捕获异常 C 抛出异常 D 嵌套异常

public static void main(String[] args) { method (); } public class test6 { public static void main(String[] args) { method (); } static void method() throws Exception { try { System.out.println("test6"); finally { System.out.println("finally"); 6 对下面程序描述正t确的是 A 代码编译成功,输出test和finally B 代码编译成功,输出test C 代码实现选项A的功能,之后Java停止运行,抛出异常,但是不进行处理 D 代码不能编译通过 D

A 在catch代码段中可以使用return语句返回到异常抛出点 B 异常机制可以用于流程控制 15 下列描述正确的是 A 在catch代码段中可以使用return语句返回到异常抛出点 B 异常机制可以用于流程控制 C catch(Exception e)可以捕获异常的任何类型 D 程序发生异常时,如无法进行合适的异常处理,则该程序恢复正常运行 C

8.5习题 一、选择题 1.下列描述正确的是( ) A) 在catch代码段中可以使用return语句返回到异常抛出点 1.下列描述正确的是( ) A) 在catch代码段中可以使用return语句返回到异常抛出点 B) 异常机制可以用于流程控制 C) catch(Exception e)可以捕获异常的任何类型 D) 程序发生异常时,如无法进行合适的异常处理,则该程序恢复正常运行 2.关于异常的含义,下列描述正确的是( ) A) 程序编译错误 B) 程序语法错误 C) 程序自定义的异常 D) 程序编译或者运行时发生的异常事件 3.抛出异常时,应该使用哪个子句( ) A) throw B)catch C)finally D)throws

4.自定义异常时,可通过对下列哪一项进行继承?( ) A) Error类 B) Applet类 C) Exception类 D) AssertionError类 5.当方法产生该方法无法确定如何处理的异常时,应该如何处理?( ) A) 声明异常 B) 捕获异常 C) 抛出异常 D) 嵌套异常 6.对于try和catch子句的排列方式,下列哪一项是正确的?( ) A)子类异常在前,父类异常在后 B)父类异常在前,子类异常在后 C) 只能有子类异常 D)父类异常和子类异常不能同时出现在同一个类中

二、填空题 1.异常类的最上层为 类,此类又有两个子类: 和 。 2.Java在执行时期的错误处理功能,称为 。 3.Java由内部系统所产生的错误,称为 ,由程序本身或环境所产生的错误,称为 。 4.处理异常分为两种情况,捕获异常和 。 三、简答题: 1、为什么要有自定义异常? 2、java程序中如何处理多种异常?