Java程序设计项目教程 教学课件 ppt 作者 郭庚麒 周江_ 08章 异常

上传人:E**** 文档编号:89447646 上传时间:2019-05-25 格式:PPTX 页数:18 大小:87.82KB
返回 下载 相关 举报
Java程序设计项目教程 教学课件 ppt 作者 郭庚麒 周江_ 08章 异常_第1页
第1页 / 共18页
Java程序设计项目教程 教学课件 ppt 作者 郭庚麒 周江_ 08章 异常_第2页
第2页 / 共18页
Java程序设计项目教程 教学课件 ppt 作者 郭庚麒 周江_ 08章 异常_第3页
第3页 / 共18页
Java程序设计项目教程 教学课件 ppt 作者 郭庚麒 周江_ 08章 异常_第4页
第4页 / 共18页
Java程序设计项目教程 教学课件 ppt 作者 郭庚麒 周江_ 08章 异常_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《Java程序设计项目教程 教学课件 ppt 作者 郭庚麒 周江_ 08章 异常》由会员分享,可在线阅读,更多相关《Java程序设计项目教程 教学课件 ppt 作者 郭庚麒 周江_ 08章 异常(18页珍藏版)》请在金锄头文库上搜索。

1、,第8章 异常,【学习目标】 在程序运行中,由于程序员粗心或者用户使用的疏忽,很容易导致程序出错,在java虚拟机看来,这些错误通常是一种异常情况,因此,异常是jdk中定义好的一些错误类的集合,是可以在程序中捕获和处理的,读者在学习完本章后,应该可以达到以下目标: 了解异常的概念和分类、异常处理方式; 捕获程序中可能会出现的异常,并做相应处理; 将某方法中出现的异常抛出,让调用该方法的程序去处理该异常; 能用java自定义一种异常,并在该异常出现时捕获并做处理。,8.1 异常的概念和分类 一个程序在执行时期可能会遇到一些非预期的情况或错误。Java的异常处理就是来处理这类状况的机制,它能处理执

2、行时期错误,功能强大且使用方便。 8.1.1什么叫异常 8.1.2异常与错误的区别 8.1.3异常类的继承结构,8.2 异常处理方式 8.2.1捕获处理异常,try /可能会发生异常的程序块: catch(异常类1 异常参考名称) 异常处理程序1 catch(异常类2 异常参考名称) 异常处理程序2 . finally 最终处理程序 ,【任务8-1】处理除数为0异常,public class InputException1 public static void main(String args) try System.out.println(4/0); catch ( ArithmeticEx

3、ception e) System.out.println(“算术错误:除数为0,提示信息为“+e.toString(); ,算术错误:除数为0,提示信息为java.lang.ArithmeticException: / by zero,【任务8-2】同时处理多个异常。,public class ArrayException public static void main(String args) int x=args.length; int a=new intx; for (int i=0;i=x-1;i+) ai=Integer.parseInt(argsi); int b=1,2,3,4

4、,0; try for (int i=0;i5;i+) System.out.println(ai/bi); catch(ArrayIndexOutOfBoundsException e1) System.out.println(“异常:数组越界“); catch(ArithmeticException e2) System.out.println(“异常:算数错误“); finally System.out.println(“程序结束“); ,1 1 1 1 异常:数组越界 程序结束,1 1 1 1 异常:算数错误 程序结束,8.2.2 throws和throw语句,通常情况下,异常是由系统

5、自动捕获的,但有的时候,程序员也可以根据需要自己通过throw语句抛出某类异常。格式为 throw new 异常类名(信息);,【任务8-3】抛出异常,public class Deposit public static double discount(int n) if (n0) throw new IllegalArgumentException(“n应该为正整数“); return n*0.08; public static void main(String args) try int i=Integer.parseInt(args0); System.out.println(“用户消费

6、“+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(“程序结束“); ,异常:没有输入参数 程序

7、结束,异常:参数不能转换为整型 程序结束,自定义异常:java.lang.IllegalArgumentException: n应该为正整数 程序结束,用户消费800元,可优惠64.0元 程序结束,完整的throws格式如下,稍后介绍的【任务8-4】就符合这类格式 ()throws , if(异常条件1成立) throw new 异常类1(); if(异常条件1成立) throw new 异常类2(); . ,8.3自定义异常,【任务8-4】在程序中自定义一个异常 类并使用它,import javax.swing.JOptionPane; class PasswdException exten

8、ds 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; public static void main(String args) try String p

9、asswd=JOptionPane.showInputDialog(“ 请设置初始密码“); checkpasswd(passwd); System.out.println(“密码已经设置“); catch(PasswdException e) System.out.println(e); finally System.out.println(“程序结束“); ,密码不能小于六位 ch8.eg8_4.PasswdException 程序结束,密码已经设置 程序结束,该任务中自己定义了一个异常如下: class PasswdException extends Exception PasswdEx

10、ception() System.out.println(“ 密码不能小于六位“); ,8.4对异常的进一步讨论,(1)对Error类及其子类的对象,程序则不必处理,因为这类异常表示Java内部出现错误,而这类错误应该很少出现。 (2)对RuntimeException类及其子类,程序中可以不必处理,但这类异常表示程序员设计程序时有错误,而并不是用户操作或者环境原因引起的异常,所以程序员应该改正程序,消除这类异常。 (3)除此之外的异常都应该在程序中被处理。有三个方式可以选择1)用try-catch-finally语句进行捕获处理2)明确表示不处理该异常,声明抛出异常(用throws语句)3)

11、先捕获处理,再抛出异常。 (4)Java语言的异常处理机制将使Java程序结构不清晰,建议将正常的逻辑功能代码放在try块中,将所有感兴趣的异常及处理代码排列在catch语句中,使代码结构清晰。,8.5习题,一、选择题 1下列描述正确的是( ) A) 在catch代码段中可以使用return语句返回到异常抛出点 B) 异常机制可以用于流程控制 C) catch(Exception e)可以捕获异常的任何类型 D) 程序发生异常时,如无法进行合适的异常处理,则该程序恢复正常运行 2关于异常的含义,下列描述正确的是( ) A) 程序编译错误 B) 程序语法错误 C) 程序自定义的异常 D) 程序编

12、译或者运行时发生的异常事件 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异常类的最上层为 类,此类又有两个子类: 和 。 2Java在执行时期的错误处理功能,称为 。 3Java由内部系统所产生的错误,称为 ,由程序本身或环境所产生的错误,称为 。 4处理异常分为两种情况,捕获异常和 。 三、简答题: 1、为什么要有自定义异常? 2、java程序中如何处理多种异常?,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号