受检异常与非受检异常
1.受检异常是在编译时期有编译器检测的异常,必须要捕获异常。受检异常继承于Exception。
2.非受检异常是在运行时期的异常,编译器不会检测异常,需要时也可以捕获异常。非受检异常继承于RuntimeException。
代码如下:
<pre name="code" class="java"><span style="font-family:Verdana;font-size:18px;">package com.demo;
public class Demo {
public static void checkException() throws Exception {
throw new CheckException("受检异常");
}
public static void unCheckException() {
throw new UnCheckException("非受检异常");
}
public static void main(String[] args) {
try {
checkException();
} catch (Exception e) {
e.printStackTrace();
}
unCheckException();
}
}</span>
com.demo.CheckException: 受检异常
at com.demo.Demo.checkException(Demo.java:6)
at com.demo.Demo.main(Demo.java:15)
Exception in thread "main" com.demo.UnCheckException: 非受检异常
at com.demo.Demo.unCheckException(Demo.java:10)
at com.demo.Demo.main(Demo.java:20)
可以看出受检异常必须在编译时就捕获到,而非受检异常则不需要在编译时捕获,在运行时抛出了RuntimeException。