资源预览内容
第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
第9页 / 共29页
第10页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
主编:孙修东、王永红高职高专规划示范教材 北京航空航天大学出版社1目录任务一 搭建环境(构建Java集成开发环境)任务二 Java欢迎你(开发简单Java应用程序任务三 小试牛刀(学习Java语言基础)任务四 挑战选择(使用分支控制流程)任务五 游戏人生(使用循环控制流程)任务六 回归自然(创建、使用类和对象)任务七 3G时代的消息传递(定义和使用类方法)任务八 保护你的隐私(封装的使用)任务九 子承父业(继承和多态的使用)任务十 上帝万能之手(接口的使用)2任务十一 用数组存储信息(使用数组)任务十二 使用字符串进行交流(使用字符串)任务十三 防患于未然(捕获并处理异常)任务十四 主动出击(抛出异常)任务十五 认识Java Applet(Applet入门)任务十六 丰富多彩的Applet(在Applet中播放声音和显示图像)任务十七 进入Windows世界(设计图形用户界面)任务十八 布局规划(使用布局管理器)任务十九 事件委托处理(如何处理事件)任务二十 选择之道(使用选择控件和选择事件)目录3任务二十一 简明清晰的菜单(使用菜单和其他常用事件)任务二十二 访问数据(使用JDBC连接数据库)任务二十三 访问数据升级(数据库编程)任务二十四 文件管理(目录与文件管理)任务二十五 顺序进出之道(文件的顺序访问)任务二十六 随机进出之道(文件的随机访问)任务二十七 JAVA的分身术(创建和启动线程)任务二十八 线程的生命周期与优先级(线程的状态与调度)任务二十九 基于连接的通信(Java中的套接字Socket)任务三十 基于无连接的通信(Java中的数据报编程)目录4任务十三三 防患于未然(捕获并处理异常)防患于未然(捕获并处理异常) 21知识目标知识目标能力目标能力目标什么是异常;如何进行异常处理;异常处理的关键字;异常处理结构。 掌握Java的异常处理机制;运用 try、catch、finally 处理异常。 5内容提要内容提要4跟我做:跟我做:捕获并处理异常捕获并处理异常 1235实现方案实现方案 代码分析代码分析 必备知识必备知识 动手做一做动手做一做 613.1 跟我做:捕获并处理异常捕获并处理异常 n任务情景任务情景编写除法计算器程序。当除数为零时,产生异常。当输入除数、被除数其中有一个不是数字时,也产生异常。当调用存放在数组中的计算结果,数组索引越界,也产生异常。n运行结果运行结果第1章目录713.2 实现方案 n问题分析问题分析从键盘输入一个整型数字可以使用java.util.Scanner的nextInt ()方法。Scanner in = new Scanner(System.in);int i = in.nextInt();但在程序运行时,会产生很多意想不到的输入问题,如输入数中出现了字母、特殊符号等,程序无法正确运行下去。本任务采用异常捕获和处理技术保证程序的健壮性。第1章目录813.2 实现方案 n解决步骤解决步骤1.打开Eclipse,在study项目中创建包com.task13,再确定类名CalculateException,得到类的框架。package com. task13;public class CalculateException/* * param args */public static void main(String args) / TODO Auto-generated method stub2.将/ TODO Auto-generated method stub替换成:int result=0,1,2;int operand1=0;int operand2=0;3.接着输入代码:Scanner in = new Scanner(System.in);try /详细实现代码参见13.3 catch (InputMismatchException ie) /详细实现代码参见13.3 4.导入java.util.Scanner和java.util.InputMismatchException后,运行程序。第1章目录9n程序代码程序代码package com.task13;import java.util.InputMismatchException;import java.util.Scanner;/* * CalculateException.java * 实现try/catch */public class CalculateException /* * param args */public static void main(String args) int result=0,1,2;int operand1=0;int operand2=0;Scanner in = new Scanner(System.in);trySystem.out.print(请输入除数:);operand1 = in.nextInt(); System.out.print(请输入被除数:);operand2 = in.nextInt(); result2=operand2/operand1;System.out.println(计算结果:+result3); catch (InputMismatchException ie) System.out.println(异常:输入不为数字!); catch (ArithmeticException ae) System.out.println(异常:除数不能为零!); catch (ArrayIndexOutOfBoundsException aie) System.out.println(异常:数组索引越界!);catch (Exception e) System.out.println(其他异常:+e.getMessage();第1章目录13.3 代码分析 10n应用扩展应用扩展如果在程序运行后,要求无论产生异常,还是不产生异常,都要显示“欢迎使用计算机器”,则需要在trycatch后,增加finally。增加的代码为:finallySystem.out.println(欢迎使用计算机器!);13.3 代码分析 1113.4 必备知识 13.4.1 异常的概念在Java程序编写中,通过编译,能够发现很多错误,但有些问题只能在程序运行的时候才能发现。一旦问题出现,程序将终止,返回到操作系统。异常异常就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。例如,除数为零、数组下标越界、需要的文件找不到等,程序都会出现异常。例如,当给int类型变量b赋值0后,执行到c=a/b;语句时,就会出现异常,因为数学中规定除数为能为零。异常信息如图13-2。第1章目录1213.4 必备知识 图中的异常信息表示,产生了“java.lang.ArithmeticException”算术异常。产生异常的语句,在包“com.task13”中的“MyException”类中的“main()”方法的第15行,除数为零。出现了异常,会打乱原先的执行顺序,得不到预期的运行结果。所以,需要在程序中进行异常处理。异常处理把程序功能代码与异常处理代码分开,集中处理异常,使得整个程序代码更有条理,也减少了编程代码。第1章目录1313.4.2 异常处理机制Java使用异常处理机制为程序提供了异常处理的能力。所谓异常处异常处理理,就是在程序中预先想好对异常的处理办法,当程序运行出现异常时,对异常进行处理,处理完毕,程序继续运行。Java异常处理机制由捕获异常和处理异常两部分组成。当出现了异常事件,就会生成一个异常对象,传递给运行时系统,这个产生和提交异常的过程称为抛出(抛出(throw)异常)异常。当运行时系统得到异常对象时,将会寻找处理异常的方法,把当前异常对象交给该方法处理,这一过程称为捕获(捕获(catch)异)异常常。如果没有找到可以捕获异常的方法,则运行时系统将终止,程序退出运行状态。第1章目录13.4 必备知识必备知识 1413.4.3 异常的分类Java中,异常由类来表示,异常类的父类是Throwable类。Throwable类有两个直接子类Error类和Exception类。Error类表示程序运行时较少发生的内部系统错误,程序员无法处理。Exception类表示程序运行时程序本身和环境产生的异常,可以捕获和处理。异常类继承结构如图13-3。13.4 必备知识必备知识 ThrowableObjectErrorExceptionSQLExceptionIOExceptionRuntimeException1513.4.4 标准异常类Exception类常用子类的继承关系如表13-3。13.4 必备知识必备知识 ThrowableObjectErrorExceptionSQLExceptionIOExceptionRuntimeException1613.4.5 异常的捕获与处理Java的异常捕获与处理是通过5个关键字来实现的:try、catch、 finally、throw、throws。本任务的重点在学习try/catch/finally结构上。关键字try构成的try语句块执行可能产生异常的代码;关键字catch构成的catch语句块捕获异常,然后,对异常进行所需的处理;关键字finally构成的finally语句块完成一些资源释放、清理的工作,如关闭try程序块中所有打开的文件、断开网络连接。在异常处理中,经常使用异常对象的方法。使用getMessage()方法返回保存在某个异常中的描述字符串,使用printStackTrace ()方法把调用堆栈的内容打印出来。关键字throw用于手动抛出异常、throws用于声明方法可能要抛出的各种异常,将在任务十四进行学习。13.4 必备知识必备知识 171.异常处理的语句结构异常处理的语句结构try/try语句块,可能产生异常的代码。catch(异常类型 异常引用变量)/catch语句块,处理异常的代码。捕获异常。finally /finally语句块,释放资源的代码。无论是否发生异常,代码都会执行。在语句结构中,try和catch部分是必须的,并且catch部分可以有多个,finally语句块是可选项,可以没有。13.4 必备知识必备知识 182. 异常处理的执行流程异常处理的执行流程try语句块异常?语句块异常?catch语句块语句块finally语句块语句块有异常无异常有异常无异常异常处理的执行流程如图13-3。try语句块异常?catch语句块finally语句块有异常无异常13.4 必备知识必备知识 19从异常处理的执行流程图中,可以看出,当try语句块引发异常时,将会抛出异常对象,然后,在catch语句块中捕获异常对象,进行异常处理。如果无法捕获抛出的异常对象,则会发生错误,程序停止运行。如果try语句块没有引发异常,catch语句块将不执行。但是,无论无论有没有异常抛出,有没有异常抛出,finally语句块总是被执行。语句块总是被执行。注意:注意:catch语句块中的异常处理代码中,不能访问由try语句块定义的对象,这是因为try语句块在异常处理代码开始执行之前已过期。13.4 必备知识必备知识 203. try/catch结构捕获异常结构捕获异常try/catch结构是异常处理中最简洁、最核心的语句块,能够捕获异常,并进行必要的处理。关键字try和catch都不能省略。例如,在新生入学时使用的迎新系统中,输入新生的家庭电话号码。号码只能是数字组成,如果输入非数字,则产生异常。代码如下:package com.task13;import java.util.Scanner;/* * TryCatchException.java * 实现try/catch */public class TryCatchException /* * param args */public static void main(String args) Scanner in = new Scanner(System.in);System.out.println(=迎新系统=);System.out.println(3 新生报到);13.4 必备知识必备知识 21try /try语句块,可能产生异常的代码System.out.println(请输入新生的家庭电话号码:);System.out.println(如,区号0523+号码81234567,输入052381234567);String telephone=in.nextLine();/检测输入的电话号码是否全为数字,不全为数字,产生异常产生异常int tel=Integer.parseInt(telephone);System.out.println(新生的家庭电话号码:+tel); catch (NumberFormatException nex) /捕获异常捕获异常/catch语句块对异常进行处理System.out.println(产生异常,电话号码应为数字!);/System.out.println(nex.toString(); /返回异常对象的类名,以及异常对象的信息nex.printStackTrace(); /堆栈跟踪功能显示出程序运行到当前类的执行流程 13.4 必备知识必备知识 224.多重多重catch捕获异常捕获异常多重catch就是在try/catch结构中,出现一个try语句块,多个catch语句块的情况,每个catch语句块捕获一种异常类的对象。如果捕获的异常类之间没有父子关系,各类的catch语句块顺序无关紧要,但是,如果它们之间有父子关系父子关系,则必须将子类的必须将子类的catch语句块放在父类的语句块放在父类的catch语句块语句块之前。之前。例如,ArithmeticException算术异常类与NullPointerException空指针异常类之间不存在父子关系,捕获异常时,它们的catch语句块顺序可以不加考虑。try/try语句块,可能产生异常的代码。catch(ArithmeticException ae)/位置位置可以与NullPointerException 类对调/catch语句块,处理异常的代码。捕获异常。 catch(NullPointerException ne)/位置位置可以与ArithmeticException 类对调/catch语句块,处理异常的代码。捕获异常。13.4 必备知识必备知识 23但是,Exception是异常根类,ArrayIndexOutOfBoundsException是数组索引越界异常类,它们之间存在父子关系,所以,Exception父类父类catch语句块只能放在后面。语句块只能放在后面。try/try语句块,可能产生异常的代码。catch(ArrayIndexOutOfBoundsException ae)/位置位置必须在Exception之前之前/catch语句块,处理异常的代码。捕获异常。 catch(Exception e)/位置位置只能在ArrayIndexOutOfBoundsException之后/catch语句块,处理异常的代码。捕获异常。13.4 必备知识必备知识 24多重catch捕获异常举例。从键盘输入除数和被除数,计算结果。当输入的数不为数字时,产生NumberFormatException异常。当除数为零时,产生ArithmeticException算术异常,此时结果分为正无穷、零、负无穷三种情况。出现其他的异常,则显示无法处理。代码如下。package com.task13;import java.util.Scanner;/* * TryCatchsException.java * 实现多重catch */public class TryCatchsException /* * param args */public static void main(String args) int operand1=0;/除数int operand2=0;/被除数Scanner in = new Scanner(System.in);13.4 必备知识必备知识 25try System.out.println(请输入除数:);operand1=Integer.parseInt(in.nextLine();System.out.println(请输入被除数:);operand2=Integer.parseInt(in.nextLine();System.out.println(运算结果:+operand2/operand1);catch (NumberFormatException nex) /捕获字符串转数字异常 System.out.println(捕获异常:输入不为数字!);catch (ArithmeticException aex) /捕获算术异常,除数为零if (operand20)System.out.println(运算结果:正无穷);else if (operand20)System.out.println(运算结果:负无穷);elseSystem.out.println(运算结果:零);catch (Exception ex) System.out.println(出现无法处理的异常!); 13.4 必备知识必备知识 265. try/catch/finally结构捕获异常结构捕获异常try/catch/finally结构带有关键字finally。finally语句块用来进行善后处理工作。例如,打开数据库,从数据库读取相应的数据,当读取完成后,最后要关闭数据库连接。没有读取成功,也要关闭数据库连接。package com.task13;import java.util.Scanner;/* * TryCatchFinallyException.java * 实现Try/Catch/Finally Exception */public class TryCatchFinallyException /* * param args */public static void main(String args) 13.4 必备知识必备知识 27try/与数据库建立连接/创建statement对象/执行SQL语句/处理查询结果集catch (SQLException se) /捕获数据库异常 System.out.println(出现数据库异常!);se.printStackTrace(); finally /关闭结果集/关闭statement对象/关闭数据库连接注意:注意:如果try语句块里有一个return语句,那么紧跟在这个try后的finally 语句块语句块里的代码会执行会执行,而且在在return前执行前执行。13.4 必备知识必备知识 2813.5 动手做一做动手做一做一、实训目的掌握Java的异常处理机制;掌握运用 try、catch、finally 处理异常。二、实训内容1.编写程序,能够产生、捕获和处理NullPointerException异常和ClassCastException 异常。2.编写程序,能够产生、捕获和处理ArithmeticException异常和IndexOutOfBoundsException异常。三、简要提示在产生、捕获和处理异常时,一要学会使用try/catch结构,try语句块中放可能产生异常的代码,catch语句块放捕获和处理异常的代码。二要掌握异常类之间的继承关系,特别是多重catch结构时,要严格区分异常类的先后顺序。四、程序代码参见本教材教学资源。五、实训思考1.可能产生异常的代码放在哪一个语句块?2.异常类之间的继承关系。29
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号