非受检异常

在 Kotlin 中,所有异常都是非受检的(Non-Checked Exceptions),这意味着编译器不会强迫你捕获其中的任何一个。而在Java中会要求我们捕获异常,例如下面的代码:

Kotlin极简教程

也就是说,我们需要写类似下面的try catch代码块:

  1. try {
  2. jsonUtils.parseObject("{}");
  3. } catch (Exception e) {
  4. e.printStackTrace();
  5. }

然而在Kotlin中情况就不是这样子了:当我们调用一个声明受检异常的 Java 方法时,Kotlin 不会强迫你做任何事情:

  1. @Test fun testNonCheckedExceptions() {
  2. val jsonUtils = JSONUtils()
  3. jsonUtils.parseObject("{}")
  4. }

但是,我们在运行的时候,还是会抛异常:

  1. com.easy.kotlin.CallingJavaNullSafe > testNonCheckedExceptions FAILED
  2. java.lang.Exception at CallingJavaNullSafe.kt:34

Kotlin的不受检异常,这样也会导致运行时抛出异常。关于异常的处理,该处理的终归还是要处理的。