本节目标

  • 错误类型
  • 抛出、捕获

环境

  • Dart 2.0.0

错误的两种类型

Exception 类

Exception class

名称 说明
DeferredLoadException 延迟加载错误
FormatException 格式错误
IntegerDivisionByZeroException 整数除零错误
IOException IO 错误
IsolateSpawnException 隔离产生错误
TimeoutException 超时错误

Error 类

Error class

名称 说明
AbstractClassInstantiationError 抽象类实例化错误
ArgumentError 参数错误
AssertionError 断言错误
AsyncError 异步错误
CastError Cast 错误
ConcurrentModificationError 并发修改错误
CyclicInitializationError 周期初始错误
FallThroughError Fall Through 错误
JsonUnsupportedObjectError json 不支持错误
NoSuchMethodError 没有这个方法错误
NullThrownError Null 错误错误
OutOfMemoryError 内存溢出错误
RemoteError 远程错误
StackOverflowError 堆栈溢出错误
StateError 状态错误
UnimplementedError 未实现的错误
UnsupportedError 不支持错误

抛出错误

1
2
3
4
5
6
7
8
// Exception 对象
// throw new FormatException('这是一个格式错误提示');

// Error 对象
// throw new OutOfMemoryError();

// 任意对象
// throw '这是一个异常';

捕获错误

1
2
3
4
5
6
7
8
// try {
// // throw new FormatException('这是一个格式错误提示');
// throw new OutOfMemoryError();
// } on OutOfMemoryError {
// print('没有内存了');
// } catch (e) {
// print(e);
// }

重新抛出错误

1
2
3
4
5
6
7
8
// try {
// throw new OutOfMemoryError();
// } on OutOfMemoryError {
// print('没有内存了');
// rethrow;
// } catch (e) {
// print(e);
// }

Finally 执行

1
2
3
4
5
6
7
8
9
10
// try {
// throw new OutOfMemoryError();
// } on OutOfMemoryError {
// print('没有内存了');
// rethrow;
// } catch (e) {
// print(e);
// } finally {
// print('end');
// }

代码

参考


© 猫哥

https://ducafecat.tech