Dart - 异常
2019-12-18 本文已影响0人
LouisXWB
Dart 代码可以抛出和捕获异常。异常表示一些未知的错误情况,如果异常没有捕获则会被抛出从而导致抛出异常的代码终止执行。
备忘📝:
"与 Java 不同的是,Dart 的所有异常都是非必检异常,方法不一定会声明其所抛出的异常并且你也不会被要求捕获任何异常。"
抛出异常
下面是关于抛出或者 引发 异常的示例:
throw FormatException('Expected at least 1 section');
你也可以抛出任意的对象:
throw 'Out of llamas!';
推荐:代码通常抛出 Error 或 Exception 类型的异常。
捕获异常
捕获异常可以避免异常继续传递(重新抛出异常除外)。捕获一个异常可以给你处理它的机会:
try {
breedMoreLlamas();
} on OutOfLlamasException {
buyMoreLlamas();
}
如果不想获取异常的实例,dart用的是on ExceptionClass{}
,如果想获取异常实例,可以加上on ExceptionClass catch(e){}
来获取处理异常实例。
对于可以抛出多种异常类型的代码,也可以指定多个 catch
语句,每个语句分别对应一个异常类型,如果 catch
语句没有指定异常类型则表示可以捕获任意异常类型:
try {
breedMoreLlamas();
} on OutOfLlamasException {
// 指定异常
buyMoreLlamas();
} on Exception catch (e) {
// 其它类型的异常
print('Unknown exception: $e');
} catch (e) {
// // 不指定类型,处理其它全部
print('Something really unknown: $e');
}
如上述代码所示可以使用 on
或 catch
来捕获异常,使用 on
来指定异常类型,使用 catch
来捕获异常对象,两者可同时使用。
Finally
用法跟其他语言类似,就不细说了,更多详情请参考 Dart 核心库概览的异常章节获取更多相关信息。