《Java程序设计教程》教学课件 项目六.pptx

上传人:wj 文档编号:801470 上传时间:2023-04-30 格式:PPTX 页数:22 大小:149.24KB
下载 相关 举报
《Java程序设计教程》教学课件 项目六.pptx_第1页
第1页 / 共22页
《Java程序设计教程》教学课件 项目六.pptx_第2页
第2页 / 共22页
《Java程序设计教程》教学课件 项目六.pptx_第3页
第3页 / 共22页
《Java程序设计教程》教学课件 项目六.pptx_第4页
第4页 / 共22页
《Java程序设计教程》教学课件 项目六.pptx_第5页
第5页 / 共22页
《Java程序设计教程》教学课件 项目六.pptx_第6页
第6页 / 共22页
《Java程序设计教程》教学课件 项目六.pptx_第7页
第7页 / 共22页
《Java程序设计教程》教学课件 项目六.pptx_第8页
第8页 / 共22页
《Java程序设计教程》教学课件 项目六.pptx_第9页
第9页 / 共22页
《Java程序设计教程》教学课件 项目六.pptx_第10页
第10页 / 共22页
《Java程序设计教程》教学课件 项目六.pptx_第11页
第11页 / 共22页
《Java程序设计教程》教学课件 项目六.pptx_第12页
第12页 / 共22页
《Java程序设计教程》教学课件 项目六.pptx_第13页
第13页 / 共22页
《Java程序设计教程》教学课件 项目六.pptx_第14页
第14页 / 共22页
《Java程序设计教程》教学课件 项目六.pptx_第15页
第15页 / 共22页
《Java程序设计教程》教学课件 项目六.pptx_第16页
第16页 / 共22页
《Java程序设计教程》教学课件 项目六.pptx_第17页
第17页 / 共22页
《Java程序设计教程》教学课件 项目六.pptx_第18页
第18页 / 共22页
《Java程序设计教程》教学课件 项目六.pptx_第19页
第19页 / 共22页
《Java程序设计教程》教学课件 项目六.pptx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《Java程序设计教程》教学课件 项目六.pptx

《《Java程序设计教程》教学课件 项目六.pptx》由会员分享,可在线阅读,更多相关《《Java程序设计教程》教学课件 项目六.pptx(22页珍藏版)》请在冰点文库上搜索。

《Java程序设计教程》教学课件 项目六.pptx

Java程序设计教程,项目六数组和字符串,任务一了解Java中的异常任务二异常的处理,Java程序设计教程,任务一了解Java中的异常,/读文件字节数据有效时循环/显示读出的字节数据,while(b=fis.read()!

=-1)System.out.print(b);fis.close();/关闭文件,异常(Exception)也叫例外。

在Java编程语言中,异常就是程序在运行过程中由于硬件设备问题、软件设计错误或缺陷等导致的程序错误。

在软件开发过程中,很多情况都将导致异常的产生。

例如,想打开的文件不存在,网络中断等。

一、熟悉Java中异常的产生与处理方法1非运行时异常packageChapter6;importjava.io.*;classException1publicstaticvoidmain(Stringargs)/创建FileInputStream对象FileInputStreamfis=newFileInputStream(text.txt);intb;,Java程序设计教程,2使用throws声明抛出异常,importjava.io.*;classException2publicstaticvoidmain(Stringargs)throwsFileNotFoundException,IOExceptionFileInputStreamfis=newFileInputStream(text.txt);intb;while(b=fis.read()!

=-1)/读文件字节数据有效时循环System.out.print(b);/显示读出的字节数据fis.close();/关闭文件System.out.println(程序正常结束);编译并运行程序,如果在工程文件夹中存在“text.txt”文件,系统将按字节读出文件内容并显示。

否则,将显示如下信息:

Exceptioninthreadmainjava.io.FileNotFoundException:

text.txt(系统找不到指定的文件。

)atjava.io.FileInputStream.open(NativeMethod)atjava.io.FileInputStream.(UnknownSource)atjava.io.FileInputStream.(UnknownSource)atException2.main(Exception2.java:

8),Java程序设计教程,3使用try-catch语句捕获异常并进行处理,Java提供了try-catch语句。

其中,应将可能出现异常的语句放在try代码块中,而将各种异常处理代码按类型放在多个catch代码块中。

importjava.io.*;publicclassException3publicstaticvoidmain(Stringargs)try/try代码块,其中可能会出现异常FileInputStreamfis=newFileInputStream(text.txt);intb;while(b=fis.read()!

=-1)System.out.print(b);fis.close();catch(FileNotFoundExceptione)/利用catch语句捕捉FileNotFoundException异常并处理/FileNotFoundException为异常类型,e为异常对象System.out.println(e);System.out.println(message(异常提示):

+e.getMessage();catch(IOExceptione)/利用catch语句捕捉IOException异常并处理System.out.println(e);System.out.println(程序正常结束);,Java程序设计教程,二、Java中异常的特点和处理机制,从大的方面讲,Java的异常可以分为非运行时异常和运行异常。

就像前面的例子那样,如果程序出现非运行时异常,程序将无法通过编译,我们必须通过为程序增加throws声明或try-catch语句加以解决。

在Java中,系统把程序在运行时可能出现的故障分为两类:

一类是非致命性的,通过某种程度的处理后,程序还能继续运行,这类情况称为异常(Exception),如打开一个文件,发现文件不存在;另一类是致命性的,即程序不能恢复运行,这类情况称为错误(Error),如程序在运行过程中内存耗尽。

在Java程序运行期间,如果出现了异常事件,系统会自动生成一个异常对象。

该对象包含了一组信息,指明了异常的类型,以及异常发生时程序的状态等。

对于这些信息,我们可以通过直接访问对象,或者调用对象方法来获取。

Java程序设计教程,(4)对于异常的处理,我们可以采用如下几种方法:

在方法体中增加try-catch语句,从而告知系统,当try代码,块出现异常时,利用catch语句捕捉异常,并利用catch代码块对异常加以处理,从而让程序能继续运行。

为方法名增加throws声明,抛出一些异常。

如果用户能够明确预测到异常,则可通过在程序中增加throw语句,让程序自身而不是系统来抛出异常。

如果希望在程序退出异常处理代码时对程序进行一些统一处理,可以将必须执行的代码放在finally代码块中。

三、Java异常类及其方法在Java中,每一个异常都由一个异常类来代表,所有异常类都继承了java.lang.Throwable类。

其中,Error为错误类,Exception类为异常类。

异常类又可以分为运行时异常类(RuntimeException)和非运行时异常类两种。

Java程序设计教程,Java程序设计教程,常见运行时异常类,Java程序设计教程,常见非运行时异常类,Java程序设计教程,任务二异常的处理,一、try-catch语句try-catch语句的一般格式为:

try/可能发生异常的代码块catch(异常类型异常对象名)/异常处理代码块try语句块用大括号“”指定了一段代码,此段代码在运行过程中可能会生成一个或多个异常对象。

try语句块后面跟随一个或多个catch语句,用于处理try代码块中生成的的异常对象。

catch语句中的参数类型指明了它能够捕获的异常类型,这个类必须为Throwable类的子类。

当try语句块中的某条语句抛出一个异常对象时,如果与catch语句指定的参数相匹配,那么就会执行这个catch语句。

Java程序设计教程,案例6-1数据输入格式检查,【案例描述】利用try/catch代码块检查用户输入的数据是否是有效的浮点数。

如果是,则将其记录下来,否则提示用户重新输入。

【技术要点】基于Scanner类创建对象时,其数据源为System.in,表示来自键盘。

在try代码块内,我们利用Scanner类的nexrDouble()方法来读取数据并分析它是不是双精度浮点数。

如果是,则读取数据并输出,然后通过设置循环变量来退出do-while循环;否则,如果读取的数据不是双精度浮点数,则系统将产生一个InputMismatchException(输入不匹配异常)异常。

该异常将被catch语句捕捉,catch代码块用来显示数据输入错误提示信息,并提示用户重新输入数据,然后通过设置循环变量使do-while循环继续运行,要求用户重新输入数据。

Java程序设计教程,packageChapter6;importjava.io.*;importjava.util.*;publicclassDataInFormatCheckpublicstaticvoidmain(Stringargs)throwsIOExceptionScannerin=newScanner(System.in);booleandataright=false;/设置控制变量dataright并赋值do/循环控制trySystem.out.print(请输入一个浮点数:

);/将字符串解析为带符号的double类型数据doublenumberx=in.nextDouble();/如果输入正确,则执行如下的语句System.out.println(numberx);dataright=false;/修改循环变量,使循环结束/捕捉输入数据错误异常catch(InputMismatchExceptione)System.out.println(数据无效,请重新输入!

);/修改循环变量,使之有效,继续循环dataright=true;/读取数据换行Stringx=in.nextLine();while(dataright);,Java程序设计教程,二、使用多重catch语句,在某些情况下,一段代码块可能引发多个异常,处理这种情况时就需要定义多个catch语句,每个catch语句捕获一种类型的异常。

当异常发生时,每一个catch语句依次被检查,第一个匹配异常类型的子句被执行。

当一个catch语句执行后,其他的catch语句将被忽略,程序从try/catch代码块后面的语句继续执行。

try/可能发生异常的代码块catch(异常类型1异常对象名1)/异常处理代码块1catch(异常类型2异常对象名2)/异常处理代码块2catch(异常类型n异常对象名n)/异常处理代码块n,Java程序设计教程,三、finally语句,finally语句用来为异常处理提供一个统一的出口。

通常,finally语句主要用于资源清理等工作,如关闭打开的文件、断开网络连接等。

不论在try代码块中是否发生了异常,finally代码块中的语句都会被执行。

try/可能发生异常的代码块catch(异常类型,异常对象名)/异常处理代码块finally/最终处理代码块,Java程序设计教程,四、throw语句,利用throw语句可以明确地抛出一个异常。

一般格式如下:

throw;其中,exception是Throwable类或其子类,而且不能为多个。

publicclassException7privatestaticvoidthrowException()tryStrings=null;if(s=null)/s为null时抛出NullPointerException异常thrownewNullPointerException(sisnull);catch(NullPointerExceptione)System.out.println(“方法throwException()中抛出一个NullPointerException异常。

);throwe;/抛出异常e,/监控方法,publicstaticvoidmain(Stringargs)trythrowException();catch(NullPointerExceptione),System.out.println(“捕获方法throwException()中的异常NullPointerException);,Java程序设计教程,五、throws语句,对于非运行时异常,如果程序中没有进行捕获,则必须在方法声明时使用throws声明进行抛出,否则将会导致编译错误。

throws声明的一般格式如下:

返回类型方法名()throws异常列表/方法体publicclassException8/声明抛出异常IllegalAccessExceptionprivatestaticvoidthrowException()throwsIllegalAccessExceptionthrownewIllegalAccessException(非法访问异常);publicstaticvoidmain(Stringargs)try,/监控方法,throwException();catch(IllegalAccessExceptione)System.out.println(捕获+e);System.out.println(程序正常结束);,Java程序设计教程,六、自定义异常,用户可以通过继承Exception类来自定义异常,一般格式如下:

classextendsException,classMyExceptionextendsExceptionMyException(Strings),/定义自定义异常类MyException/构造方法,super(s);,/调用父类的构造方法,publicclassException9staticvoidmethod(intlevel)throwsMyException/声明抛出MyException异常System.out.println(调用方法method(+level+);if(level10)thrownewMyException(水位过高!

);System.out.println(没有发生异常!

);publicstaticvoidmain(Stringargs)trymethod

(1);method(11);catch(MyExceptione)System.out.println(捕捉自定义异常+e);,Java程序设计教程,案例6-2算数运算中的异常处理,【案例描述】利用异常处理机制,设计一个简单的Java程序,要求用户输入两个数值(op1和op2)以及一个算术运算符(+、*、/),然后计算出结果并显示输出;如果用户输入不正确,则给出错误提示。

【技术要点】程序在运行中可能出现的异常情况分为四种:

输入的数字有可能不是合法数字,比如输入了字母或字符串,此时程序会抛出NumberFormatException异常。

没有输入所需要的数据,此时程序会抛出ArrayIndexOutOfBoundsException异常。

进行除运算时,如果除数为0,需要手动抛出ArithmeticException异常。

如果输入的运算符不合法,需要手动抛出IllegalSignException自定义异常。

Java程序设计教程,packageChapter6;publicclassCalculatorstaticprivatefloatresult;,/定义计算结果变量,/calculate()方法用于计算结果,并判断输入的运算符的合法性staticvoidcalculate(floatop1,charsign,floatop2)throwsIllegalSignException,ArithmeticExceptionswitch(sign)case+:

/加法运算result=op1+op2;break;,case-:

/减法运算,result=op1-op2;break;,casex:

/乘法运算,result=op1*op2;break;,case/:

default:

/除法运算时,如果除数为0,抛出异常if(op2=0)thrownewArithmeticException();result=op1/op2;break;/抛出自定义异常IllegalSignExceptionthrownewIllegalSignException(你输入的运算符不对!

);,Java程序设计教程,/定义输入的两个数/定义输入的运算符,publicstaticvoidmain(Stringargs)floatin0,in2;charin1;try,in0=Float.parseFloat(args0);in1=args1.charAt(0);in2=Float.parseFloat(args2);,/接收第一个数字/接收运算符/接收第二个数字,calculate(in0,in1,in2);/进行算数运算System.out.println(in0+in1+in2+=+result);catch(NumberFormatExceptione),+,System.out.println(你输入的数有的可能不是合法数字。

注意:

乘号用字母x代替。

);catch(ArrayIndexOutOfBoundsExceptionaie)System.out.println(你没有输入所需的数据,+程序需要两个数字和一个运算符。

);catch(ArithmeticExceptionae)System.out.println(进行除法运算时,第二个数字不能为0!

);catch(IllegalSignExceptionise)System.out.println(ise.getMessage();System.out.println(每次只能输入(+、-、x、/)其中的一个。

+注意:

乘号用字母x代替。

);finallySystem.out.println(谢谢使用!

);,Java程序设计教程,packageChapter6;/自定义异常类,当输入的运算符不是合法的运算符时抛出此异常publicclassIllegalSignExceptionextendsExceptionprivateStringmessage;publicIllegalSignException(Stringmessage)this.message=message;publicStringgetMessage()returnmessage;运行参数:

5x85.0x8.0=40.0谢谢使用!

运行参数:

ax8你输入的数有的可能不是合法数字。

注意:

乘号用字母x代替。

谢谢使用!

运行参数:

5x你没有输入所需的数据,程序需要两个数字和一个运算符。

谢谢使用!

运行参数:

5/0进行除法运算时,第二个数字不能为0!

谢谢使用!

运行参数:

5*0你输入的运算符不对!

每次只能输入(+、-、x、/)其中的一个。

注意:

乘号用字母x代替。

谢谢使用!

Java程序设计教程,项目小结,本项目介绍了Java的异常处理机制,包括异常的概念、异常的处理以及自定义异常等知识。

其中,异常处理的方法是本项目的重点和难点,也是Java编程中经常用到的。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2