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");