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 | 不支持错误 |
抛出,捕获,finally
dart
try {
throw new OutOfMemoryError(); // 抛出错误
} on OutOfMemoryError {
// on 是精准捕获错误
print('内存溢出错误');
rethrow; // 重新抛出错误
} catch (e) {
// catch 捕获所有类型错误
print(e);
} finally {
// 不管有没有发生错误,都会执行finally
print('end');
}自定义异常
dart
class DioError implements Exception {
DioError(this.message, this.type);
final String message;
final String type;
@override
String toString() {
return 'DioError{message: $message, type: $type}';
}
}
throw DioError("error", "type");