异常的继承结构:基类为Throwable,其直接子类为Error和Exception。RuntimeException和IOException等继承自Exception。
非RuntimeException一般是外部错误(不考虑Error的情况下),其可以在当前类被 try{}catch语句块所捕获。RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等,必须 被 try{}catch 语句块所捕获。Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形,Error不需要捕捉。