Unchecked异常
Unchecked异常从RuntimeException派生出子类型,代码不需要处理它们的异常也能通过编译,但执行时出现就导致程序失败,代表程序中的潜在bug,类似于编程语言中的 dynamic type checking。如果客户端对出现的异常无能为力,采用unchecked exception。
应使用unchecked exception来处理编程错误:因为unchecked exception不用使客户端代码显式的处理它们,它们自己会在出现的地 方挂起程序并打印出异常信息。 充分利用Java API中提供的丰富unchecked exception,如 NullPointerException , IllegalArgumentException和 IllegalStateException等,使用这些标准的异常类而不需亲自创建新的 异常类,使代码易于理解并避免过多消耗内存。
Checked异常
Checked异常继承自 Exception 类是 checked exception。代码需要处理 API 抛出的 checked exception,要么用 catch 语句,要么直接用 throws 语句抛出去。Checked异常需要从Exception派生出子类型,必须捕获并指定错误处理器handler,否则编译无法通过类似于编程语言中的static type checking。如果客户端可以通过其他的方法恢复异常,那么采用checked exception。