Throwable是所有Java程序中错误处理的父类
子类有:Error和Exception。
- Error:表示由JVM所侦测到的无法预期的错误,由于这是属于JVM层次的严重错误,导致JVM无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形.应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出).假如出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的.
Exception:是可捕捉到的,分为运行时异常 (runtime exception)和非运行时异常(checked exception)
运行时异常 (runtime exception),我们可以不处理,总是由虚拟机接 管。比如:我们从来没有人去处理过
- NullPointerException
- ClassCastException
- IndexOutOfBoundsException
这些错误一定是程序员的错误.可以通过检查数组下标和数组边界来避免数组越界访问异常
出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就被main()抛出。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,那么这整个程序也就退出了
非运行时异常(checked exception),必须要对其进行处理,否则无法通过编译
例如以下三个,所以必须try…catch或throw 出去
b.getBinaryStream();//SQLException
is.read()//IOException
baos.toString("utf-8");//UnsupportedEncodingException