华联学院Java语言程序设计课件06异常_第1页
华联学院Java语言程序设计课件06异常_第2页
华联学院Java语言程序设计课件06异常_第3页
华联学院Java语言程序设计课件06异常_第4页
华联学院Java语言程序设计课件06异常_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、第6章异常异常的概念程序中的错误: 编译错误 运行错误异常的概念:指程序在执行过程中出现程序本身没有预料的情况,从而导致程序错误结束使用异常机制的目的:用来在发生运行异常时告诉程序如何控制自身的运行,以防止错误的进一步恶化一、异常处理机制 Java使用异常对Java程序给出一个统一和相对简单的抛出和处理错误的机制。如果一个方法本身能抛出异常,当所调用的方法出现异常时,调用者可以捕获异常使之得到处理;也可以回避异常,这时异常将在调用的堆栈中向下传递,直到被处理。和传统的方法比较异常的优点:1. 把错误代码从常规代码中分离出来2. 把错误传播给调用堆栈3. 按错误类型和错误差别分组4. 系统提供了

2、对于一些无法预测的错误的捕获和处理5. 克服了传统方法的错误信息有限的问题异常的处理过程创建异常对象抛出异常对象接收并处理程序运行时出现错误 异常类 在Java中,将异常情况分为Exception(异常)和Error(错误)两大类。 Error 类对象由 Java 虚拟机生成并抛出;Exception 类对象由应用程序处理或抛出。ObjectThrowableExceptionError 异常类的继承结构 Exception子类的继承关系ExceptionClassNotFoundException 找不到类ClassNotSupportedException试图复制一个没有实现接口的对象Il

3、legalAccessException试图访问一个类被拒绝InstantiationException试图创建一个抽象类或接口的对象InterruptedException一个线程被另外一个线程中断NoSuchMethodException请求方法不存在RuntimeException系统异常ArithmeticException 算术错误,例如除零ArrayStoreException 数组元素赋值类型不兼容ClassCastException非法强制转换类型IllegalArgumentException使用非法参数调用一个方法Exception子类(续)IllegalThreadSta

4、teException 被请求的操作和当前线程状态不匹配NumberFormatException 从一个字符串到一个数字格式的无效转换IllegalMonitorStateException非法监控操作IndexOutOfBoundsException一些类型的索引超出范围ArrayIndexOutOfBoundsException 数组索引超出范围StringIndexOutOfBoundsException 字符索引超出范围NegativeArraySizeException 以负值创建数组NullPointerException 使用无效的null引用SecurityException

5、 试图违反安全性Exception 类的主要方法public Exception( );public Exception(String s);public String toString( );public String getMessage( );二、异常处理方法 异常处理的方法有两种: 一种方法是使用trycatchfinally结构对异常进行捕获和处理; 二种方法是通过throws和throw抛出异常。 异常处理在Java中,可以通过trycatchfinally结构对异常进行捕获和处理,其形式如下:try 可能出现异常的程序代码catch (异常类名1 异常对象名1) 异常类名1对应的

6、异常处理代码catch (异常类名2 异常对象名2) 异常类名2对应的异常处理代码finally 必须执行的代码 Java实例异常public class Exception2public static void main(String args) tryint x, y;x=15;y=0;System.out.println(x/y);System.out.println(Computing successfully!); catch (ArithmeticException e)System.out.println( ArithmeticException catched ! );Syst

7、em.out.println(Exception message:+e.toString(); finally System.out.println(Finally block.); 抛出异常语句通常情况下,异常是由系统自动捕获的。但程序员也可以自己通过throw语句抛出异常。throw语句的格式为: throw new 异常类名(信息) 其中异常类名为系统异常类名或用户自定义的异常类名,“信息”是可选信息。如果提供了该信息,toString()方法的返回值中将增加该信息内容。 Java实例抛出异常public class Exception3 public static int Sum(in

8、t 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.parseInt(args0); System.out.println(Sum(n); catch (ArrayIndexOutOfBoundsException e) System.out.println(命令行为:+java Exception3 );

9、 catch (NumberFormatException e2) System.out.println(参数应为整数!); catch (IllegalArgumentException e3) System.out.println(错误参数:+e3.toString(); finally System.out.println(程序结束!); 抛出异常选项在有些情况下,一个方法并不需要处理它所生成的异常,而是向上传递,由调用该方法的其他方法来捕获该异常,这时就要用到throws子句。其格式如下: 返回类型 方法名(参数表) throws 异常类型名 声明部分 自定义异常类 自定义异常类可以通

10、过继承Exception类来实现。其一般形式为: class 自定义异常类名 extends Exception 异常类体; Java实例子定义异常import javax.swing.JOptionPane;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(); pay=Integer.parseInt(JOptionPane.showInputDialog(请输入您的月工资); if(pay0) throw new mathException(); Java实例(续) catch(Exception e) System.out.println(e); System.exit(0);

温馨提示

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

评论

0/150

提交评论