Dart tour: 8、异常
代码可以抛出和捕获异常。异常表示一些未知的错误情况,如果异常没有捕获则会被抛出从而导致抛出异常的代码终止执行。与 Java 不同的是,Dart 的方法不必声明会抛出哪些异常,并且也不必捕获任何异常。
Dart 提供了 Exception 和 Error 两种类型的异常以及一系列的子类。我们也可以定义自己的异常类型。此外也可以将任何非 null 对象作为异常抛出而不局限于 Exception 或 Error 类型。
抛出异常#
捕获异常#
捕获异常可以避免异常继续传递(重新抛出异常除外)。捕获一个异常可以给我们处理它的机会。
对于可以抛出多种异常类型的代码,可以指定多个 catch 语句,每个语句分别对应一个异常类型,如果 catch 语句没有指定异常类型则表示可以捕获任意异常类型。
关键字 rethrow 可以将捕获的异常再次抛出
Finally#
无论是否抛出异常,finally 语句始终执行,如果没有指定 catch 语句来捕获异常,则异常会在执行完 finally 语句后抛出。
自定义异常#
如果系统提供的异常不满足需求,可以自定义异常来实现。