java——异常处理

java中的所有异常类都是Throwable的子类,这些子类主要分为两部分

1. Throwable——Exception (一些常见的异常如下)

Throwable——Exception——IOException——EOFException                                             文件到达末尾,试图继续读取

Throwable——Exception——IOException——FileNotFoundException                               试图打开一个不存在的文件

Throwable——Exception——RuntimeException——ArrithmeticException                          算数条件异常,比如除数为0

Throwable——Exception——RuntimeException——MissingResourceException                缺少资源,试图访问不存在的资源

Throwable——Exception——RuntimeException——ClassNotFoundException                   试图使用一个并不存在的类

Throwable——Exception——RuntimeException——NullPointerException                          访问空引用

Throwable——Exception——RuntimeException——illegalArgumentException                   不合法的参数异常

Throwable——Exception——RuntimeException——ArrayIndexOutOfBoundsException     试图访问不存在的数组元素

Exception及其子类:使用try,catch进行异常的捕获和处理

 

2. Throwable——Error(一些常见错误)

Throwable——Error——VirtulMachineError——StackOverFlowError

Throwable——Error——VirtulMachineError——OutOfMemoryError

Throwable——Error——AWTError (AWT:使用操作系统中的图形函数的抽象窗口工具,C/C++编写,另一个常用的是Swing组件,纯java编写)

Error及其子类:系统内部的错误,错误一旦产生,程序一般便没有机会进行捕获和处理了。这类错误通常是由于java虚拟机运行错误,比如Virtual MachineError或者OutOfMemoryError等,而不是程序运行错误。

 

可检查异常:如常见的IOException异常,这类异常编辑器要求必须处理,否则不能通过编译,可以使用try-catch来进行捕获,或者直接throws抛出异常(声明异常越具体越好)

不可检查异常(运行时异常):RuntimeException及其子类,在编译时不会检查,运行时会抛出,需要尽量避免(Error也属于运行时异常)

 

try——catch——finally

try:用于捕获异常,后面可以有多个catch。如果没有catch,一定要有finally

catch:异常捕获,尽量将异常明确,可以具体分为多个异常来处理。

finally:最终处理,无论是否有捕获异常或者是否进行了异常处理,finally都会在try——catch的返回之前处理,如果finally中有return,则不在执行try——catch中的返回。

以下情况,finally不会被执行

1. 在执行finally之前遇到了System.exit()

2. 线程已经死亡

3. finally语句块中出现异常

4. CPU关闭

 

throw抛出异常

try{
     //执行语句      
}catch(IOException e){throw new Exception();}

在函数体中抛出异常,之后程序会立即终止,然后在包含它的try块中,从里向外寻找匹配的catch块进行处理。如果所有方法都层层上抛异常,最终JVM会进行处理,进行异常消息的打印,保存堆栈信息。

 

throws抛出异常

public static void main(String[] args){
      throws IOException{
               //执行语句
      }  
}

throw是针对对象抛出的异常,而throws则是针对方法抛出的异常。在java中,一个异常产生后,会按照调用层次向上冒泡,直到被try-catch块处理,或者达到main()方法为止

 

posted @ 2017-08-29 13:53  东木刀纹  阅读(179)  评论(0编辑  收藏  举报