版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第六节 Java异常处理public class Temp public static void main(String args) String a = Hello,Java,World,!;for(int i = 0;imoney) BankException ex = new BankException(); throw(ex); money = money - n; System.out.println(取钱成功!); class EmptyQueueException extends Exception/用户自定义的系统类的子类Queue sourceQueue;public Em
2、ptyQueueException(Queue q) super(“队列已空。”); sourceQueue = q;public String toString( )/重载父类的方法,给出详细的错误信息 return(“队列”+sourceQueue.toString()+“为空,执行出队操作引发异常”; int dequeue( ) throws EmptyQueueException/出队列操作,若队列不空,则从队列头部取出一个数据int data;if(!isEmpty( ) data = m_FirstNode.getData( ); m_FirstNode = m_FirstNod
3、e.getNext( ); return data;else throw (new EmptyQueueException(this); 用户自定义的异常,需要程序员在程序的合适位置创建自定义异常的对象,并利用throw语句将这个异常对象抛出1. 异常处理处理异常捕捉异常:l 一个异常被抛出时,应该有专门的语句来接收被抛出的异常对象,称为捕捉异常。l 当一个异常类的对象被捕捉后,用户程序就会发生流程的跳转,系统中止当前的流程而跳转至专门的异常处理语句块,或直接跳出当前程序和Java虚拟机回到操作系统。l 异常对象被catch语句捕捉和处理,异常处理语句块的格式为:catch (异常类名 异常形
4、式参数名) 异常处理语句组; 1. 异常处理处理异常捕捉异常: 每个catch语句块都应该与一个try语句块相对应。 try语句块用来对其中的语句进行监视,出现异常的时候启动Java的异常处理机制。 任何可能抛出异常的语句(包括throw语句、调用可能抛出异常的方法的方法调用语句),都应该包含在try语句块中。public class Temp public static void main(String args) int a,b; tryb = 0;a = 3 / b;System.out.println(null); catch (ArithmeticException e) Syste
5、m.out.println(Exception:);e.printStackTrace();System.out.println(OK,Its Here!); if(this.menu.equals(q) System.out.println(请输入您要取出的金额:n); Scanner input = new Scanner(System.in); double m1 = input.nextDouble(); try this.withdrawal(m1); catch (BankException e) System.out.println(e.getMessage(); finally
6、 this.showMenu(); finally语句块可以有0/1个。无论有没有发生异常,finally语句块总会执行。 1. 异常处理处理异常多异常的处理: 一个try块可能产生多种不同的异常:public T newInstance() throws nstantiationException, IllegalAccessException可以使用多异常处理机制,用多个catch语句块对所有可能的异常进行捕获,每个catch块用来接收和处理一种特定的异常对象。 用不同的catch块分别处理不同的异常对象,要求catch块能够区别不同的异常对象通过catch块的参数来实现的。1. 异常处理
7、处理异常当try语句块抛出一个异常对象e时,程序的流程首先转向第一个catch块检查当前异常对象是否可以被这个catch块所接收;如果e被第一个catch块所接收,则程序直接跳转到这个catch语句块中,语句块执行完毕后忽略try块中尚未执行的语句和其他的catch块,直接执行之后的语句;如果e与第一个catch块不匹配,系统将自动转到第二个catch块进行匹配,如果第二个仍不匹配,就转向第三个直到找到一个可以接收e的catch块,完成流程的跳转。try语句块catch(Exception1 e1)catch(Exception2 e2)catch(Exception3 e3)1. 异常处理处
8、理异常异常对象e能否被一个catch语句块所接收?l 看该异常对象e与catch块的形式参数是否匹配,如果:(1) 异常对象与参数属于相同的异常类or (2) 异常对象属于参数异常类的子类or (3) 异常对象实现了参数所定义的接口 异常对象将被接收。1. 异常处理处理异常public class Test public static void main (String args) try if (args0.equals(null) throw (new NullPointerException(); else throw (new ArrayIndexOutOfBoundsExceptio
9、n(); catch (NullPointerException e) e.getMessage(); catch(ArrayIndexOutOfBoundsException e) exgetMessage(); 1. 异常处理处理异常如果所有的catch块都不能与当前的异常对象e匹配,则说明当前方法不能处理这个异常对象e,程序流程将返回到调用该方法的上层方法。如果这个上层方法中定义了异常对象e相匹配的catch块,流程就跳转到这个catch块中;否则继续回溯更上层的方法。如果所有的方法中都找不到合适的catch块,则由系统来处理这个异常对象。通常中止程序的执行,退出虚拟机返回操作系统,并在
10、标准输出上打印相关的异常信息。 try语句块catch(Exception1 e1)catch(Exception2 e2)catch(Exception3 e3)1. 异常处理处理异常假设try块中所有语句的执行都没有引发异常,则所有的catch块都会被忽略而不予执行。try语句块catch(Exception1 e1)catch(Exception2 e2)catch(Exception3 e3)1. 异常处理处理异常在catch块处理不同的异常时:l catch块中的语句应根据异常的不同而执行不同的操作,一般为打印异常和错误的相关信息,包括异常名称、产生异常的方法名等。l 由于异常对象与
11、catch块的匹配是按照catch块的先后排列顺序进行的,所以在多异常处理时应设计各catch块的排列顺序。越具体的异常的catch块应放在越前面,而可以与多种异常相匹配的catch块应放在较后的位置。class TestArray private int i; private int array = 1, 2, 3, 4, 5 ; void ml() while (true) i = (int)(Math.random() * 10)-5; System.out.println(以随机数为分母的除法结果是: + 100 / i); System.out.println(数组array + i
12、 + 的值是: + arrayi); public class Temp public static void main(String args) TestArray a = new TestArray();try a.ml(); catch (ArrayIndexOutOfBoundsException e1) System.out.println(数组下标越界); catch (ArithmeticException e2) System.out.println(运算错误,分母为0);e2.printStackTrace();System.out.println(程序结束。);class
13、InsufficientFundsException extends Exception private Bank excepbank; / 银行对象 private double excepAmount; / 要取的钱 InsufficientFundsException(Bank ba, double dAmount) excepbank=ba; excepAmount=dAmount; public String excepMessage() String str=The balance is+excepbank.balance + n+The withdrawal was+excepA
14、mount; return str; / 异常类 class Bank double balance;/ 存款数 Bank(double balance)this.balance=balance;public void deposite(double dAmount) if(dAmount0.0) balance+=dAmount; public void withdrawal(double dAmount) throws InsufficientFundsException if (balancedAmount) throw new InsufficientFundsException(this, dAmount); balance=balance-dAmount; public void showBalance() System.out.println(The balance is +(int)balance); public class ExceptionDemo public static void main(String args) try Ba
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025中学外教劳动合同
- 协同团队互助保障承诺书6篇
- 2025委托技术服务合同
- 生产进度管理工具支持多生产线协调
- 售后服务质量监测及改善分析模板
- 2025商业店铺租赁合同样本简化版
- 商务合同管理要素快速核查表
- 2025年起员工在合同期内因病停工企业不得单方面终止劳动合同
- 2025标准办公室租赁合同协议书
- 中国烧白灰项目投资可行性研究报告
- GB/T 6109.11-2025漆包圆绕组线第11部分:155级聚酰胺复合直焊聚氨酯漆包铜圆线
- 2025年语文高考北京试卷及答案
- 2025年陕西铁路物流集团有限公司招聘(56人)笔试历年参考题库附带答案详解
- 2025年泽库县公安局面向社会公开招聘警务辅助人员考试笔试备考试题及答案解析
- 二十届四中全会测试题及答案单选题(20题)
- 2025重庆双福农产品批发市场有限公司招聘综合办公室文员、冻库管理员、招商员等岗位22人备考考试试题及答案解析
- 湖南省娄底市2023-2024学年六年级上学期数学期中试卷(含答案)
- 《思想道德与法治》 课件 第四章 明确价值要求 践行价值准则
- 《黄金分割》 完整版课件
- JJF(电子)0036-2019 示波器电流探头校准规范-(高清现行)
- 《CorelDRAW-X7设计与制作》全书教案完整版电子教案整本书教案最全单元教学设计
评论
0/150
提交评论