一、Throwable 两个子类 Error 和 Exception:
1、Error 一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和预防,遇到这样的错误,建议让程序终止。
2、Exception 表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。
Exception 是程序中非正常事件,使程序不能继续往下执行,可以被 catch 关键字捕获,然后执行异常处理程序。Exception 也可以分为两类:
1)RuntimeException:运行时异常,完全由开发者造成;如果在代码中提前进行验证,这些故障就可以避免。
2)其他:非运行时异常,由外在问题所导致,开发者无法控制。
二、checked 和 unchecked 异常
1、Java 标准规定,异常分为 checked 和 unchecked 类型:
unchecked :继承自 Error 和 RumtimeException 的异常
checked :其他异常
2、Checked 异常的处理
声明异常
在 spec 中声明:必须在方法的 spec 中用 @throws 写明该方法将抛出的所有 checked 异常,便于客户端处理;
在方法声明之后用关键字 throws 声明可能抛出的所有异常