异常

1. 异常分为两大类:

    1). Checked exception (非Runtime Exception) // 编译期会报错

    2). Unchecked exception (Runtime Exception) // 编译期不会报错

 

2. Java中的所有异常都会直接或间接的继承自Exception

 

3. RuntimeException类也是直接继承自Exception类,它叫做运行时异常,Java中所有的运行时异常都会直接或间接地继承自RuntimeException。

 

4. Java中凡是继承自Exception而不是继承自RuntimeException的类都是非运行时异常。

 

5. 异常处理的一般结构是:
    try{

    }
    catch(Exception e){

    }
    finally{

    }

    无论程序是否出现异常,finally 块中的代码都是会被执行的。

 

6. 对于非运行时异常(checked exception) ,必须要对其进行处理,处理方式有两种:

    第一种是使用 try.. catch…finally 进行捕获;

    第二种是在调用该会产生异常的方法所在的方法声明 throws Exception

 

7. 对于运行时异常(runtime exception) ,我们可以不对其进行处理,也可以对其进行处理。推荐不对其进行处理。

 

8. 所谓自定义异常, 通常就是定义了一个继承自 Exception 类的子类,那么这个类就是一个自定义异常类。通常情况下,我们都会直接继承

    自 Exception 类,一般不会继承某个运行时的异常类。

 

9. 我们可以使用多个 catch 块来捕获异常,这时需要将父类型的 catch 块放到子类型的catch 块之后,这样才能保证后续的catch可能被执行,

    否则子类型的 catch将永远无法到达,Java 编译器会报编译错误;如果多个 catch 块的异常类型是独立的(MyException, MyException2),

    那么谁前谁后都是可以的。

 

10. 如果 try 块中存在 return 语句,那么首先也需要将 finally 块中的代码执行完毕,然后方法再返回。

 

11. 如果 try 块中存在 System.exit(0)语句,那么就不会执行 finally 块中的代码,因为System.exit(0)会终止当前运行的Java虚拟机,

      程序会在虚拟机终止前结束执行。

 

12. 自定义异常是为了根据我们的意志返回一些制定的信息,方便我们及时准确的发现问题所在。

      同时避免大量无用日志信息的输出,导致磁盘写满。

 

 

 

posted @ 2014-12-28 16:36  Jtianlin  阅读(142)  评论(0编辑  收藏  举报