Java包含两种异常:checked异常和unchecked(运行时)异常。
checked和unchecked异常之间的区别是:
- Checked异常必须被显式地捕获或者传递,如Basic try-catch-finally Exception Handling一文中所说。而unchecked异常则可以不必捕获或抛出。(为什一个要必须显示捕获,一个不必?个人理解第三点的内外部原因)
- Checked异常继承java.lang.Exception类。Unchecked异常继承自java.lang.RuntimeException类。
- checked异常 : 表示无效,不是程序中可以预测的。比如无效的用户输入,文件不存在,网络或者数据库链接错误。这些都是外在的原因,都不是程序内部可以控制的。(外在原因导致,要显示告诉人家是别人(外部)的错,类似于解释)
unchecked异常:表示错误,程序内部的逻辑错误。是RuntimeException的子类,比如 IllegalArgumentException,NullPointerException和IllegalStateException。
(内部逻辑等原因,自己处理不好,定要自己承受结果)