所有异常类型都是内置类Throwable的子类。因此,Throwable在异常类层次结构的顶层。紧接着Throwable下面的是两个把异常分成两个不同分支的子类。一个分支是Exception。
该类用于用户程序可能捕捉的异常情况。它也是你可以用来创建你自己用户异常类型子类的类。在Exception分支中有一个重要子类RuntimeException。该类型的异常自动为你所编写的程序定义并且包括被零除和非法数组索引这样的错误。
该类用于用户程序可能捕捉的异常情况。它也是你可以用来创建你自己用户异常类型子类的类。在Exception分支中有一个重要子类RuntimeException。该类型的异常自动为你所编写的程序定义并且包括被零除和非法数组索引这样的错误。
另一类分支由Error作为顶层,Error定义了在通常环境下不希望被程序捕获的异常。Error类型的异常用于Java运行时系统来显示与运行时系统本身有关的错误。堆栈溢出是这种错误的一例。本章将不讨论关于Error类型的异常处理,因为它们通常是灾难性的致命错误,不是你的程序可以控制的。
runtimeException 未检查异常 运行时异常 可以避免的 可以处理的 可处理可不处理
非runtimeException 已检查异常 可以避免的 可以处理的 必须处理
如果一个程序出现已检查异常,而程序员未加处理,则程序会出错
throw 是一个动作 表示抛出一个异常 当出现异常时,异常对象会沿着方法的调用链反向返回
如何处理异常
throws 抛出异常 消极处理 处理已检查异常
try catch 积极处理 处理一切异常
try{ }catch(Exception e){ }
try{ }catch(Exception e){ }finaly{ 无论如何都会执行,通常用来释放资源 }
自定义异常 继承Exception 或 继承 runtimeException(推荐)