Java专题4案例2.-异常课件_第1页
Java专题4案例2.-异常课件_第2页
Java专题4案例2.-异常课件_第3页
Java专题4案例2.-异常课件_第4页
Java专题4案例2.-异常课件_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

猜字游戏教学目标了解编程中遇到的错误理解Java异常及Java异常处理机制掌握自定义异常的使用掌握throw与throws的区别能熟练使用try-catch-finlly进行异常处理通过实现加法计算器功能掌握Java的异常处理Java专题4案例2.-异常演示程序演示程序……Java专题4案例2.-异常相关实践1打开netBeans5.5,新建guessNumber应用程序,在项目中加入包com.handson.guessNumberJava专题4案例2.-异常相关实践2新建类NumberException类,用来生成自定义异常

packagecom.handson.guessNumber;publicclassNumberExceptionextendsException{publicNumberException(){super("输入的不是一个100以内的正整数!");}}

Java专题4案例2.-异常相关实践3在com.handson.guessNumber包中新建类ToolspublicclassTools{publicstaticbooleanchick(Stringtemp)throwsNumberException{intnumber=Integer.parseInt(temp);if(number<0||number>=100){thrownewNumberException();}if(number==65){returntrue;}else{returnfalse;}}}Java专题4案例2.-异常相关实践4新建类Main,用来测试publicclassMain{publicstaticvoidmain(String[]args){booleanb=false;System.out.println("一个数字游戏");System.out.println("请看下面的数字,判断最后一个数字是什么?");System.out.println("5,9,17,33,?");System.out.println("答案要是一个正整数!");System.out.println("请输入答案");Java专题4案例2.-异常相关实践5继续main函数中的代码try{BufferedReaderreader=newBufferedReader(newInputStreamReader(System.in));Stringanswer=reader.readLine();b=Tools.chick(answer);}catch(IOExceptionex){System.out.println("没有输入!");

ex.printStackTrace();}catch(java.lang.NumberFormatExceptionex){System.out.println("输入的不是数字");

System.out.println(ex.getMessage());ex.printStackTrace();}catch(NumberExceptionex){System.out.println(ex.getMessage());}……123Java专题4案例2.-异常相关实践6继续main函数中的代码……finally

{if(b){System.out.println("回答的非常正确!");}else{System.out.println("回答不正确!");}}}Java专题4案例2.-异常相关实践7运行输入非数字Java专题4案例2.-异常相关实践8运行输入不在0-100之间的数字Java专题4案例2.-异常相关实践9输入正确答案的结果Java专题4案例2.-异常总结异常是运行时发生的错误可以使用try、catch、throw、throws和finally来管理Java异常处理。要监控的程序语句包含在try块内catch块中的代码用于捕获和处理异常。在方法返回之前绝对必须执行的代码应放置在finally块中要手动引发异常,使用关键字throw。任何被抛到方法外部的异常都必须用throws子句指定自定义异常的编写和使用Java专题4案例2.-异常编程中的错误编译错误编译错误是由于所编写的程序存在语法问题,未能通过由源代码到目标码(Java语言中由源代码到字节码)的编译过程而产生的,它由语言的编译系统负责检测和报告;系统运行错误系统运行错误是指程序在执行过程中发生的错误,它会中断程序的正常执行;逻辑运行错误没有了编译错误和系统运行错误,还有可能有逻辑运行错误,逻辑运行错误是指程序不能实现编程人员的设计意图和设计功能而产生的错误,例如排序时不能正确排序。Java专题4案例2.-异常异常异常(Exception)=非正常异常不同于错误举例:到C盘找不存在的文件异常是需要处理的Java专题4案例2.-异常Java语言特定的运行错误处理机制异常对象异常抛出异常抛出异常类处理机制Java专题4案例2.-异常异常类异常类包括:java定义的异常类自定义异常类Java中定义了很多异常类,每个异常类都代表了一种运行错误,类中包含了该运行错误的信息和处理错误的方法等内容。每当Java程序运行过程中发生一个可识别的运行错误时,系统都会产生一个相应的该异常类的对象,即产生一个异常Java专题4案例2.-异常系统定义的运行异常异常说明RuntimeExceptionjava.lang包中多数异常的基类ArithmeticException算术错误,如除以0IllegalArgumentException方法收到非法参数ArrayIndexOutOfBoundsException数组下标出界NullPointerException试图访问null对象引用SecurityException试图违反安全性ClassNotFoundException不能加载请求的类AWTExceptionAWT中的异常IOExceptionI/O异常的根类

不能找到文件EOFException文件结束IllegalAccessException对类的访问被拒绝NoSuchMethodException请求的方法不存在Java专题4案例2.-异常用户自定义异常内置异常不可能始终足以捕获所有错误,因此需要用户自定义的异常类用户自定义异常主要用来处理用户程序中特定的逻辑运行错误用户自定义的异常类应为Exception类(或者Exception类的子类)的子类例如:publicclassNumberExceptionextendsException{publicNumberException(){super("输入的不是一个100以内的正整数!");}}Java专题4案例2.-异常异常的抛出1异常抛出系统自动抛出(系统定义异常类的对象)手工抛出(自定义异常对象或系统异常对象)手式抛出异常时用throw语句使用throw语句就可以明确地抛出一个异常throw语句格式为:<throw><异常对象>Java专题4案例2.-异常异常的抛出2throws语句如果一个方法可能导致一个异常但不处理它,此时要求在方法声明中包含throws子句,通知潜在调用者,如果发生了异常,由调用者处理。一个throws子句列举了一个方法可能引发的所有异常类型。例如publicstaticbooleanchick(Stringtemp)throwsNumberException

Java专题4案例2.-异常异常的抛出3throw与throws的区别throws出现在方法头,而throw出现在方法体中。throws表示出现异常的一种可能性,并不一定会发生这些异常,执行throw则一定抛出了某种异常。两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由方法去处理异常,真正的处理异常由方法的上层调用处理。Java专题4案例2.-异常捕获异常1Java语言中异常的捕获是通过try-catch-finally语句来实现的。try{ //有可能抛弃异常的代码}catch(Exceptionname1e){ //异常处理代码}catch(Exceptionname2e){ //异常处理代码}finally{ //此部分代码总被执行}Java专题4案例2.-异常Try-catch-finally执行流程try块finally块catch块

无异常异常try、catch和finally块的执行流程Java专题4案例2.-异常try块trytry块中的语句体是程序中有可能产生一个或多个异常的语句,该段语句是程序正常情况下应该要完成的功能。Java专题4案例2.-异常Catch块1Catch块每个try代码块可以伴随一个或多个catch块,用于捕获并处理try代码块中所生成的异常。catch语句只需要一个形式参数指明它能捕获的异常类型,这个类型必须是Throwable的子类,运行时系统通过参数值把被抛出的异常对象传递给catch块。Java专题4案例2.-异常Catch块2每个catch块都有一个异常类对象作为参数一个异常对象能否被一个catch语句块所接收,主要看该异常对象与catch块的异常参数的匹配情况:当它们满足下面三个条件的任何一个时,异常对象将被接收。异常对象与参数属于相同的异常类异常对象属于参数异常类的子类异常对象实现了参数所定义的接口Java专题4案例2.-异常Catch块3catch语句的顺序先捕获子类异常,再捕获父类异常例如:intx=0;try{ inty=10/x;}catch(ArithmeticExceptione){ System.out.println("devidebyzero");}catch(Exceptione){ System.out.println("Thereisanexception");}

Java专题4案例2.-异常Catch块4异常只能被捕捉一次如果异常没有被捕捉,程序流程将返回到调用该方法的上层方法Java专题4案例2.-异常Finally块finally确保了在出现异常时所有清除工作都将得到处理与try块一起使用无论是否出现异常,finally块都将运行Java专题4案例2.-异常异常类常用方法1publicStringgetMessage();getMessage()方法返回描述当前异常类的消息字符串。pub

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论