《java程序设计》课件 第9章异常处理_第1页
《java程序设计》课件 第9章异常处理_第2页
《java程序设计》课件 第9章异常处理_第3页
《java程序设计》课件 第9章异常处理_第4页
《java程序设计》课件 第9章异常处理_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、第九章第九章9.1 Java异常处理机制异常处理机制9.2 异常处理方式异常处理方式9.1 异常处理机制异常处理机制 Java使用异常对程序给出一个统一使用异常对程序给出一个统一和相对简单的抛出和处理错误的机制。和相对简单的抛出和处理错误的机制。如果一个方法本身能抛出异常,调用者如果一个方法本身能抛出异常,调用者可以捕获异常使之得到处理;也可以回可以捕获异常使之得到处理;也可以回避异常,这时异常将在调用的堆栈中向避异常,这时异常将在调用的堆栈中向下传递,直到被处理。下传递,直到被处理。 异常类 在在Java中,将异常情况分为中,将异常情况分为Exception(异常)和(异常)和Error(错

2、误)两大类。(错误)两大类。 Error 类对象由类对象由 Java 虚拟机虚拟机生成并抛出;生成并抛出;Exception 类对象由应用程序处理或抛出类对象由应用程序处理或抛出。ObjectThrowableExceptionError 异常类的继承结构 Exception子类的继承关系ExceptionClassNotFoundExceptionClassNotSupportedExceptionIllegalAccessExceptionInstantiationExceptionInterruptedExceptionNoSuchMethodExceptionRuntimeExcept

3、ionArithmeticExceptionArrayStoreExceptionClassCastExceptionIllegalArgumentExceptionIllegalThreadStateExceptionNumberFormatExceptionException子类(续)IllegalMonitorStateExceptionIndexOutOfBoundsExceptionArrayIndexOutOfBoundsExceptionStringIndexOutOfBoundsExceptionNegativeArraySizeExceptionNullPointerExce

4、ptionSecurityException Exception 类的主要方法public Exception( );public Exception(String s);public String toString( );public String getMessage( );9.2 异常处理方法异常处理方法 异常处理的方法有两种:1.使用trycatchfinally结构对异常进行捕获和处理;2.通过throws和throw抛出异常。 1 trycatchfinally结构结构在在Java中,可以通过中,可以通过trycatchfinally结构对异常进行捕获和处理,其形式结构对异常进行捕

5、获和处理,其形式如下:如下:try 可能出现异常的程序代码可能出现异常的程序代码catch (异常类名异常类名1 异常对象名异常对象名1) 异常类名异常类名1对应的异常处理代码对应的异常处理代码 catch (异常类名异常类名2 异常对象名异常对象名2) 异常类名异常类名2对应的异常处理代码对应的异常处理代码 finally 必须执行的代码必须执行的代码 说明u将可能发生异常的程序代码放置在将可能发生异常的程序代码放置在try程序块中。程序运程序块中。程序运行过程中,如果该块内的代码没有出现任何异常,后面行过程中,如果该块内的代码没有出现任何异常,后面的各的各catch块不起任何作用。但如果该

6、块内的代码出现了块不起任何作用。但如果该块内的代码出现了异常,系统将终止异常,系统将终止try块代码的执行,自动跳转到所发生块代码的执行,自动跳转到所发生的异常类对应的的异常类对应的catch块中,执行该块中的代码。块中,执行该块中的代码。 u其中的其中的finally块是个可选项,如果含有块是个可选项,如果含有finally块,无论块,无论异常是否发生,异常是否发生,finally块的代码必定执行。块的代码必定执行。 u一个一个try块可以对应多个块可以对应多个catch块,用于对多个异常类进块,用于对多个异常类进行捕获。行捕获。 Java实例实例捕获数组下标越界异常捕获数组下标越界异常pu

7、blic class Exception1 public static void main(String args) try int a=1,2,3,4,5, sum=0; for (int i=0; i=5; i+) sum=sum+ai; System.out.println(sum=+sum); System.out.println(Successfully! ); catch (ArrayIndexOutOfBoundsException e) System.out.println(ArrayIndexOutOfBoundsException detected); finally Sy

8、stem.out.println( Programm Finished! ); 例例 -捕获算术异常捕获算术异常public class Exception2public static void main(String args) try int x, y; x=15; y=0; System.out.println(x/y); System.out.println(Computing successfully!); catch (ArithmeticException e) System.out.println( ArithmeticException catched ! ); System

9、.out.println(Exception message:+e.toString(); finally System.out.println(Finally block.); 2 抛出异常抛出异常通常情况下,异常是由系统自动捕获的通常情况下,异常是由系统自动捕获的。但程序但程序员也可以自己通过员也可以自己通过throw语句抛出异常。语句抛出异常。throw语语句的格式为:句的格式为: throw new 异常类名(信息)异常类名(信息) 其中异常类名为其中异常类名为系统异常类名或或用户自定义的异的异常类名,常类名,“信息信息”是可选信息。如果提供了该信是可选信息。如果提供了该信息,息,to

10、String()方法的返回值中将增加该信息内容。方法的返回值中将增加该信息内容。 l抛出异常语句抛出异常语句Java实例实例抛出多个异常public class Exception3 public static int Sum(int n) if (n 0) throw new IllegalArgumentException(n应该为正整数!应该为正整数!); int s = 0; for (int i=0; i=n; i+) s = s + i; return s; public static void main(String args) try int n = Integer.parse

11、Int(args0); System.out.println(Sum(n); catch (ArrayIndexOutOfBoundsException e) System.out.println(命令行为:命令行为:+java Exception3 ); catch (NumberFormatException e2) System.out.println(参数参数应为整数应为整数!); catch (IllegalArgumentException e3) System.out.println(错误参数错误参数:+e3.toString(); finally System.out.prin

12、tln(程序结束程序结束!); 在有些情况下,一个方法并不需要处理它所生成的异常,在有些情况下,一个方法并不需要处理它所生成的异常,而是向上传递,由调用该方法的其他方法来捕获该异常,而是向上传递,由调用该方法的其他方法来捕获该异常,这时就要用到这时就要用到throws子句。其格式如下:子句。其格式如下: 返回值类型名返回值类型名 方法名(方法名(参数表参数表) throws 异常类型名异常类型名 声明部分声明部分 语句部分语句部分 l抛出异常选项抛出异常选项例-抛出异常的方法public class Exception4 public static int Sum() throws Negat

13、iveArraySizeException int s = 0; int x = new int-4; for (int i=0; i1.0E8 | aim0) throw new OverFlowException(); else return x*x; public static void main(String args) int y; try y= multi(); System.out.println(y=+y); catch(OverFlowException e) System.out.println(e); 例 -处理多种异常 import javax.swing.JOptio

14、nPane;class mathException extends Exception mathException() System.out.println(输入数据不正确); class Exception6 public static String name; public static int pay; public static void inputdata() throws mathException try name=JOptionPane.showInputDialog(请输入您的姓名); if(name.equals(“”) throw new Exception(); /假如没有输入名字就“抛出”一个 Exception异常 pay=Integer.parseInt(JOptionPane.showInputDialog(请输入您的月工资); if(pay0) throw new mathException(); /假如输入的月工资数小于零,就会抛出自定义异常mathException catch(Exception e) /捕获Exception异常

温馨提示

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

评论

0/150

提交评论