Java程序设计任务驱动式教程 任务十三 防患于未然(捕获并处理异常)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

主编:孙修东、王永红高职高专规划示范教材北京航空航天大学出版社2/29目录任务一搭建环境(构建Java集成开发环境)任务二Java欢迎你(开发简单Java应用程序任务三小试牛刀(学习Java语言基础)任务四挑战选择(使用分支控制流程)任务五游戏人生(使用循环控制流程)任务六回归自然(创建、使用类和对象)任务七3G时代的消息传递(定义和使用类方法)任务八保护你的隐私(封装的使用)任务九子承父业(继承和多态的使用)任务十上帝万能之手(接口的使用)3/29任务十一用数组存储信息(使用数组)任务十二使用字符串进行交流(使用字符串)任务十三防患于未然(捕获并处理异常)任务十四主动出击(抛出异常)任务十五认识JavaApplet(Applet入门)任务十六丰富多彩的Applet(在Applet中播放声音和显示图像)任务十七进入Windows世界(设计图形用户界面)任务十八布局规划(使用布局管理器)任务十九事件委托处理(如何处理事件)任务二十选择之道(使用选择控件和选择事件)目录4/29任务二十一简明清晰的菜单(使用菜单和其他常用事件)任务二十二访问数据(使用JDBC连接数据库)任务二十三访问数据升级(数据库编程)任务二十四文件管理(目录与文件管理)任务二十五顺序进出之道(文件的顺序访问)任务二十六随机进出之道(文件的随机访问)任务二十七JAVA的分身术(创建和启动线程)任务二十八线程的生命周期与优先级(线程的状态与调度)任务二十九基于连接的通信(Java中的套接字Socket)任务三十基于无连接的通信(Java中的数据报编程)目录5/29任务十三防患于未然(捕获并处理异常)21知识目标能力目标什么是异常;如何进行异常处理;异常处理的关键字;异常处理结构。掌握Java的异常处理机制;运用try、catch、finally处理异常。6/29内容提要4跟我做:捕获并处理异常1235实现方案代码分析必备知识动手做一做7/2913.1跟我做:捕获并处理异常任务情景编写除法计算器程序。当除数为零时,产生异常。当输入除数、被除数其中有一个不是数字时,也产生异常。当调用存放在数组中的计算结果,数组索引越界,也产生异常。运行结果第1章目录8/2913.2实现方案问题分析从键盘输入一个整型数字可以使用java.util.Scanner的nextInt()方法。Scannerin=newScanner(System.in);inti=in.nextInt();但在程序运行时,会产生很多意想不到的输入问题,如输入数中出现了字母、特殊符号等,程序无法正确运行下去。本任务采用异常捕获和处理技术保证程序的健壮性。第1章目录9/2913.2实现方案解决步骤1.打开Eclipse,在study项目中创建包com.task13,再确定类名CalculateException,得到类的框架。packagecom.task13;publicclassCalculateException{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstub}}2.将//TODOAuto-generatedmethodstub替换成:intresult[]={0,1,2};intoperand1=0;intoperand2=0;3.接着输入代码:Scannerin=newScanner(System.in);try{……//详细实现代码参见13.3}catch(InputMismatchExceptionie){……//详细实现代码参见13.3}4.导入java.util.Scanner和java.util.InputMismatchException后,运行程序。第1章目录10/29程序代码packagecom.task13;importjava.util.InputMismatchException;importjava.util.Scanner;/***CalculateException.java*实现try/catch*/publicclassCalculateException{/***@paramargs*/publicstaticvoidmain(String[]args){intresult[]={0,1,2};intoperand1=0;intoperand2=0;Scannerin=newScanner(System.in);try{System.out.print(请输入除数:);operand1=in.nextInt();System.out.print(请输入被除数:);operand2=in.nextInt();result[2]=operand2/operand1;System.out.println(计算结果:+result[3]);}catch(InputMismatchExceptionie){System.out.println(异常:输入不为数字!);}catch(ArithmeticExceptionae){System.out.println(异常:除数不能为零!);}catch(ArrayIndexOutOfBoundsExceptionaie){System.out.println(异常:数组索引越界!);}catch(Exceptione){System.out.println(其他异常:+e.getMessage());}}}第1章目录13.3代码分析11/29应用扩展如果在程序运行后,要求无论产生异常,还是不产生异常,都要显示“欢迎使用计算机器”,则需要在try{}catch{}后,增加finally{}。增加的代码为:finally{System.out.println(欢迎使用计算机器!);}13.3代码分析12/2913.4必备知识13.4.1异常的概念在Java程序编写中,通过编译,能够发现很多错误,但有些问题只能在程序运行的时候才能发现。一旦问题出现,程序将终止,返回到操作系统。异常就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。例如,除数为零、数组下标越界、需要的文件找不到等,程序都会出现异常。例如,当给int类型变量b赋值0后,执行到c=a/b;语句时,就会出现异常,因为数学中规定除数为能为零。异常信息如图13-2。第1章目录13/2913.4必备知识图中的异常信息表示,产生了“java.lang.ArithmeticException”算术异常。产生异常的语句,在包“com.task13”中的“MyException”类中的“main()”方法的第15行,除数为零。出现了异常,会打乱原先的执行顺序,得不到预期的运行结果。所以,需要在程序中进行异常处理。异常处理把程序功能代码与异常处理代码分开,集中处理异常,使得整个程序代码更有条理,也减少了编程代码。第1章目录14/2913.4.2异常处理机制Java使用异常处理机制为程序提供了异常处理的能力。所谓异常处理,就是在程序中预先想好对异常的处理办法,当程序运行出现异常时,对异常进行处理,处理完毕,程序继续运行。Java异常处理机制由捕获异常和处理异常两部分组成。当出现了异常事件,就会生成一个异常对象,传递给运行时系统,这个产生和提交异常的过程称为抛出(throw)异常。当运行时系统得到异常对象时,将会寻找处理异常的方法,把当前异常对象交给该方法处理,这一过程称为捕获(catch)异常。如果没有找到可以捕获异常的方法,则运行时系统将终止,程序退出运行状态。第1章目录13.4必备知识15/2913.4.3异常的分类Java中,异常由类来表示,异常类的父类是Throwable类。Throwable类有两个直接子类Error类和Exception类。Error类表示程序运行时较少发生的内部系统错误,程序员无法处理。Exception类表示程序运行时程序本身和环境产生的异常,可以捕获和处理。异常类继承结构如图13-3。13.4必备知识ThrowableObjectErrorExceptionSQLExceptionIOExceptionRuntimeException……16/2913.4.4标准异常类Exception类常用子类的继承关系如表13-3。13.4必备知识ThrowableObjectErrorExceptionSQLExceptionIOExceptionRuntimeException……17/2913.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必备知识18/291.异常处理的语句结构try{//try语句块,可能产生异常的代码。}catch(异常类型异常引用变量){//catch语句块,处理异常的代码。捕获异常。}finally{//finally语句块,释放资源的代码。无论是否发生异常,代码都会执行。}在语句结构中,try和catch部分是必须的,并且catch部分可以有多个,finally语句块是可选项,可以没有。13.4必备知识19/292.异常处理的执行流程try语句块异常?catch语句块finally语句块有异常无异常异常处理的执行流程如图13-3。try语句块异常?catch语句块finally语句块有异常无异常13.4必备知识20/29从异常处理的执行流程图中,可以看出,当try语句块引发异常时,将会抛出异常对象,然后,在catch语句块中捕获异常对象,进行异常处理。如果无法捕获抛出的异常对象,则会发生错误,程序停止运行。如果try语句块没有引发异常,catch语句块将不执行。但是,无论有没有异常抛出,finally语句块总是被执行。注意:catch语句块中的异常处理代码中,不能访问由try语句块定义的对象,这是因为try语句块在异常处理代码开始执行之前已过期。13.4必备知识21/293.try/catch结构捕获异常try/catch结构是异常处理中最简洁、最核心的语句块,能够捕获异常,并进行必要的处理。关键字try和catch都不能省略。例如,在新生入学时使用的迎新系统中,输入新生的家庭电话号码。号码只能是数字组成,如果输入非数字,则产生异常。代码如下:packagecom.task13;importjava.util.Scanner;/***TryCatchException.java*实现try/catch*/publicclassTryCatchException{/***@paramargs*/publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in);System.out.println(=========迎新系统=========);System.out.println(3新生报到);13.4必备知识22/29try{//try语句块,可能产生异常的代码System.out.println(请输入新生的家庭电话号码:);System.out.println((如,区号0523+号码81234567,输入052381234567));

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功