java异常

2015/04/29 00:43
阅读数 31

异常结构:


try {
   
  } catch (Exception e) {
   // TODO: handle exception
  }finally{
   
  }

   

  异常机制:程序出现错误后程序如何处理,控制权交给异常处理器。(异常都是在运行中的,不是编译
时的)

     异常处理流程:遇到错误,方法立即结束,同时抛出一个异常对象。调用该方法的程序停止,并搜索

一个可以处理该异常的,并执行其中的代码。

     Error及RunTimeException及其子类为未检测异常,及自己会跑出不需要程序员抛出;而其他为已检测

异常,需要程序员抛出。

     1、Error体系描述了java运行中的内部错误以及资源耗尽的情形,一般由虚拟机抛出。

     2、Exception体系包括RunTimeException和其他非RunTimeException体系:
     
       (1)RunTimeException体系包括错误的类型转换、数组越界访问和试图访问空指针。一定是程序员的

错误。例如可以通过检查数组下标和数组边界来避免数组越界访问异常。

       (2)其他一般都是外部错误,例如试图从文件尾后读取数据,这并不是数据本身的错误,而是在应用

环境中出现的外部错误。

    客户程序员调用会抛出异常的库函数(库函数的异常由库程序员抛出);客户程序员自己使用throw语

句抛出异常。遇到Error,程序员一般是无能为力的;遇到RuntimeException,那么一定是程序存在逻辑错

误,要对程序进行修改(相当于调试的一种方法);只有已检查异常才是程序员所关心的,程序应该且仅应

该抛出或处理已检查异常。

 

     异常处理:

     1、既然捕获了异常,就要对它进行适当的处理。不要捕获异常之后又把它丢弃,不予理睬。

     2、在catch语句中尽可能指定具体的异常类型,必要时使用多个catch。不要试图处理所有可能出现的异常。

     3、保证所有资源都被正确释放。充分运用finally关键词。  
     4、在异常处理模块中提供适量的错误原因信息,组织错误信息使其易于理解和阅读。例如当前正在执行的类、方法和其他状态信息,包括以一种更适合阅读的方式整理和组
织printStackTrace提供的信息。

     5、尽量减小try块的体积。

     6、全面考虑可能出现的异常以及这些异常对执行流程的影响。

 

访问异常信息:

                 getMessage():返回该异常的详细描述字符串。

                       printStackTrace():将该异常的跟踪栈信息输出到标准错误输出。

                 printStackTrace(PrintStream s):将该异常的跟踪栈信息输出到指定输出流。

                 getStackTrace():返回该异常的跟踪栈信息。

java异常跟踪栈:

                       面向对象的应用程序运行时,经常会发生一系列方法调用,从而形成“方法调用栈”,异常的传播则相反:只要异常没有被完全捕获,异常就会从发生异常的方法逐渐向外传播,首先传给该方法的调用者,再传给调用者的调用者。。。。直至最后到main方法,如果main方法依然没有处理该方法,JVM则会终止该程序,并打印异常的跟踪栈信息。

 

常见异常:

算术异常类:ArithmeticExecption

空指针异常类:NullPointerException

类型强制转换异常:ClassCastException

数组负下标异常:NegativeArrayException

数组下标越界异常:ArrayIndexOutOfBoundsException

文件未找到异常:FileNotFoundException

方法未找到异常:NoSuchMethodException

             索引出界:IndexOutOfBoundsException

        非法参数 :IllegalArgumentException

                               

 

 

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部