【JAVA提升】- 关于异常

2017-04-12  本文已影响0人  我不是李小龙

异常

1. 异常类类图

在java世界里,所有的异常类都是Throwable的子类。 Throwable两个子类 Error 和 Exception, Error也是可以被捕获的,只是大多数情况下,认为出现error是致命的错误,不应该被忽略,所有大多数情况下都是捕获的Exception。

Exception的子类就是各种xxxException,而Error的子类就是各种XXXError了。

Throwable

2. try-catch-finally

示例:

package com.fun.lang;

/**
 * finally是不是一定执行
 *
 * @author fun
 * @date 2017-03-27 17:17
 */
public class TryCatchDemo {

    public static void main(String[] args) {

        try {
            System.out.println("into try block...");
//          System.exit(0); // 打开此注释,会发现,finally里面的代码并没有执行,这个很好理解,虚拟机都退出了,怎么执行代码
            throw new Error();
        }catch (Throwable e) {
            System.out.println("into catch block...");

        }finally {
            System.out.println("into finally block...");
        }

    }

}

/*
 * output:
 *into try block...
 *into catch block...
 *into finally block...
 */

结论:

  1. finally里面的代码不一定执行的,例如虚拟机退出了
  2. Throwable两个子类 Error 和 Exception, Error也是可以被捕获的,只是catch的是当前捕获的Error或者更上级的类才行捕获Error
  3. catch的是时候可以catch到最顶层Throwable,这样整个异常系统里面的东西都能捕获

3. 自定义异常

根据上面类图的结构,如果想要定义一个自己的一样,可以继承Exception。当然也可以自定义一个错误,继承Error就好了。

上一篇下一篇

猜你喜欢

热点阅读