Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错误条件。当条件生成时,错误将引发异常。

java.lang.throwable类图
1354020417_5176.jpg

Throwable: 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类。
Error(错误):一般是程序无法处理的错误,一般不是程序可以解决的问题,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。
Exception(异常):是程序本身可以处理的异常。

备注:基本上java中看到的报错,Error结尾的都是错误,Exception结尾的都是异常

编译期异常

类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。

运行期异常

都是RuntimeException类及其子类异常,如NullPointerException、IndexOutOfBoundsException等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

运行期的异常处理

第一种方法(自行解决)

  1. try {
  2. // 可能发生异常的代码
  3. }catch (异常类型 变量名){
  4. // 处理异常的代码
  5. // 变量名.getmessage();
  6. }finally {
  7. // 无论是否发生异常,都将执行的语句块
  8. }
  9. // 通用异常处理,但不建议这样写,我们应当抛出对应可能的异常
  10. // 比如数组异常,io异常,数学异常等
  11. try {
  12. // 可能发生异常的代码
  13. }catch (Exception e){
  14. //e.printStackTrace();
  15. }

第二种方法(向上抛出)
如果不做任何异常处理,则该类代码无法执行,向上抛出