Java异常处理

Java 异常结构

 

1、Throwable

  Throwable是 Java 语言中所有错误或异常的超类。
  Throwable包含两个子类: Error 和 Exception。它们通常用于指示发生了异常情况。
  Throwable包含了其线程创建时线程执行堆栈的快照,它提供了printStackTrace()等接口用于获取堆栈跟踪数据等信息。

2、Exception 和 RuntimeException 

  RuntimeException是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。编译器不会检查RuntimeException异常。(例如,除数为零时,抛出ArithmeticException异常。RuntimeException是ArithmeticException的超类。)

3、Error

  编译器也不会检查Error。

 

Java 将可抛出(Throwable)的结构分为三种类型:被检查的异常(Checked Exception),运行时异常(RuntimeException)和错误(Error)。

1、运行时异常 (RuntimeException及其子类都被称为运行时异常)

2、被检查的异常(Exception类本身,以及Exception的子类中除了"运行时异常"之外的其它子类都属于被检查异常)

  此类异常,要么通过throws进行声明抛出,要么通过try-catch进行捕获处理,否则不能通过编译。

3、错误(Error类及其子类)

 

在Java中进行异常处理,对于可能会发生异常的代码,可以选择三种方法来进行异常处理:
  1)对代码块用try..catch进行异常捕获处理;
  2)在该代码的方法体外用throws进行抛出声明,告知此方法的调用者这段代码可能会出现这些异常,你需要谨慎处理。此时有两种情况:
    如果声明抛出的异常是非运行时异常,此方法的调用者必须显示地用try..catch块进行捕获或者继续向上层抛出异常。
    如果声明抛出的异常是运行时异常,此方法的调用者可以选择地进行异常捕获处理。
  3)在代码块用throw手动抛出一个异常对象,此时也有两种情况,跟2)中的类似:
    如果抛出的异常对象是非运行时异常,此方法的调用者必须显示地用try..catch块进行捕获或者继续向上层抛出异常。
    如果抛出的异常对象是运行时异常,此方法的调用者可以选择地进行异常捕获处理。

  (如果最终将异常抛给main方法,则相当于交给jvm自动处理,此时jvm会简单地打印异常信息)

 

常见需要检查的异常:

  • EOFException 文件已结束异常
  • FileNotFoundException 文件未找到异常
  • SQLException 操作数据库异常
  • IOException 输入输出异常
  • NoSuchMethodException 方法未找到异常
  • ClassNotFoundException
  • NamingException
  • InterruptedException

 

posted @ 2016-06-29 16:21  Hesier  阅读(123)  评论(0编辑  收藏  举报