Dart 异常
Smoothness 2022/11/12 Dart基础
本文介绍Dart
的异常处理
和异常的捕获。
# 错误的两种类型
Exception 类
一般用在可以捕获的情况下,可以安全处理。
名称 说明 DeferredLoadException 延迟加载错误 FormatException 格式错误 IntegerDivisionByZeroException 整数除零错误 IOException IO 错误 IsolateSpawnException 隔离产生错误 TimeoutException 超时错误 Error 类
一般用在不可恢复,容易崩溃的情况。
名称 说明 AbstractClassInstantiationError 抽象类实例化错误 ArgumentError 参数错误 AssertionError 断言错误 AsyncError 异步错误 CastError Cast 错误 ConcurrentModificationError 并发修改错误 CyclicInitializationError 周期初始错误 FallThroughError Fall Through 错误 JsonUnsupportedObjectError json 不支持错误 NoSuchMethodError 没有这个方法错误 NullThrownError Null 错误错误 OutOfMemoryError 内存溢出错误 RemoteError 远程错误 StackOverflowError 堆栈溢出错误 StateError 状态错误 UnimplementedError 未实现的错误 UnsupportedError 不支持错误
# 抛出异常
throw TimeoutException('超时错误');
throw ArgumentError.value('参数错误');
1
2
2
# 捕获异常
try {
throw ArgumentError.value('参数错误');
} on ArgumentError {
print('第一次捕获');
} catch (e) {
print(e);
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# 重新抛出异常
try {
throw ArgumentError.value('参数错误');
} on ArgumentError {
print('第一次捕获');
rethrow;
} catch (e) {
print(e);
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# Finally执行
try {
throw ArgumentError.value('参数错误');
} on ArgumentError {
print('第一次捕获');
rethrow;
} catch (e) {
print(e);
} finally {
print('???');
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 自定义异常
class CustomError implements Exception {
CustomError(this.message, this.type);
final String message;
final String type;
String toString() {
return 'CustomError: { message: $message, type: $type }';
}
}
void main(List<String> args) {
throw CustomError('自定义异常', '类型');
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15