Exception
- Java中的异常分为两大类:
- Checked exception (非Runtime Exception)
- Unchecked exception(Runtime Exception)
- Java中所有的异常类都会直接或间接地继承自Exception
- RuntimeException类也是直接继承自Exception类,它叫做运行时异常,Java中所有的运行时异常都会直接或间接地继承自RuntimeException
- Java中凡是继承自Exception而不是继承自RuntimeException的类都是非运行时异常。
- 对于非运行时异常(checked exception),必须要对其进行处理,处理方式有两种:第一种是使用try… catch … finally 进行捕获;第二种是在调用该会产生异常的方法所在的方法声明throws Exception
- 对于运行时异常(runtime exception),我们可以不对其进行处理,也可以对其进行处理。推荐不对其进行处理。
- NullPointerException是空指针异常,出现该异常的原因在于某个引用为null,但你却调用了它的某个方法。这时就会出现该异常。
- 所谓自定义异常,通常就是定义了一个继承自Exception类的子类,那么这个类就是一个自定义异常类。通常情况下,我们都会直接继承自Exception类,一般不会继承某个运行时的异常类。
- 我们可以使用多个catch块来捕获异常,这时需要将父类型的catch块放到子类型的catch块之后,这样才能保证后续的catch可能被执行,否则子类型的catch将永远无法到达,Java编译器会报编译错误。如果多个catch块的异常类型是独立的,那么谁前谁后都是可以的。
- 如果try块中存在System.exit(0)语句,那么久不会执行finally块中的代码,因为System.exit(0)会终止当前运行的Java虚拟机,程序会在虚拟机终止前结束执行。