java中的(Exception)异常总结

来源:互联网 发布:淘宝跟单话术 编辑:程序博客网 时间:2024/05/22 13:11
异常的概念
    java异常是java提供的用于处理程序中错误的一种机制。
所谓错误是指在程序运行的过程中发生的一些异常事件(如:除0溢出,数组下标越界,所要读取的文件不存在)。
设计良好的程序应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生而阻断或产生不可预见
 的结果。
    java程序的执行过程中如出现异常事件,可以产生一个异常类对象,该异常类对象封装了异常事件的信息并被提交 
 给java运行时系统,这个过程称为抛出(throw)异常。
    当java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为
 捕获(catch)。
 
 如运行时报的错误
 (数组下标越界):
 Exception in thread "main" java.lang.ArrayIndexOutofBoundsException:4
 (除数为0错误)
 Exception in thread "main" java.lang.ArithmetException: /by zero
 
异常的分类
   J2SDK中定义了很多异常类,这些类对应各种各样可能出现的异常事件。
   异常类的根类为Throwable,直接子类有:Error与Exception。
   Error类是系统自身出现的错误,一般无法修复,我们不能进行处理。包括动态链接失败,虚拟机错误等,程序不对其做处理。
   Exception类是我们可以处理的异常错误,可以进行捕获处理。该类可以分为:运行时错误和非运行时错误。
   
异常的捕获和处理
    try{                                   try代码包含可能产生抛出异常的代码
 //可能抛出异常的语句                 try代码段后跟有一个或者多个catch代码段 
}catch(SomeException1 e){              每个catch代码段声明其能处理的一种特定类型的异常,并提供处理方法。
 ......                               当异常发生时,程序会中止当前的流程,根据获取异常的类型去执行相应的catch代码段
}catch(SomeException2 e){              finally段的代码无论是否发生异常都要执行。
 ......
}finally{
 ......
}

  try语句
    try{....}语句指定了一段代码,该段代码就是一次捕获并处理例外的范围。在执行过程中,该段代码可能会产生
  并抛出一种或几种类型的异常对象,在后面的catch语句要分别对这些异常做相应的处理。如果没有例外产生,所有
  的catch代码段都被忽略不执行。
  
  catch语句(先捕获小的异常,在捕获大的异常顺序捕获,否则编译不通过)
     在catch语句块中是对异常进行处理的代码,每个try语句块可以伴随一个或多个catch语句,用于处理可能产生
  的不同类型的异常对象。在catch中声明的异常对象(catch(SomeException e))封装了异常事件发生的信息,在catch
  语句块中可以使用这个对象的一些方法获取这些信息。
  例如:
      getMessage()方法,用来得到有关异常事件的信息。
 printStackTrace()方法,用来跟踪异常事件发生时执行堆栈的内容。
  
  finally语句
       finally语句为异常处理提供一个统一的出口,使得在控制流程转到程序的其他部分以前,能对程序中的
  状态做统一的管理。无论try所指定的程序块中是否抛出例外,finally所指定的代码都要被执行。通常在finally
  语句中可以进行资源的清除工作,如:
    关闭打开的文件
删除临时文件

使用自定义的异常
  使用自定义异常一般有如下步骤:
  1. 通过继承Java.lang.Exception类声明自己的异常类。
  2. 在方法适当的位置生成自定义异常的实例,并用throw语句抛出
  3. 在方法的声明部分用throws语句声明该方法可能抛出的异常。
  
注意:
   重写方法需要抛出与原方法所抛出异常类型一致反正不抛出。