异常
错误的两种类型
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 | 不支持错误 |
一般用在不可恢复,容易崩溃的情况
抛出错误
// Exception 对象
throw new FormatException('这是一个格式错误提示');
// Error 对象
throw new OutOfMemoryError();
// 任意对象
throw '这是一个异常';
捕获错误
try {
// throw new FormatException('这是一个格式错误提示');
throw new OutOfMemoryError();
} on OutOfMemoryError {
print('没有内存了');
} catch (e) {
print(e);
}
重新抛出错误
try {
throw new OutOfMemoryError();
} on OutOfMemoryError {
print('没有内存了');
rethrow;
} catch (e) {
print(e);
}
Finally 执行
try {
throw new OutOfMemoryError();
} on OutOfMemoryError {
print('没有内存了');
rethrow;
} catch (e) {
print(e);
} finally {
print('end');
}
自定义异常
class DioError implements Exception {
DioError(this.message, this.type);
final String message;
final String type;
String toString() {
return 'DioError{message: $message, type: $type}';
}
}
void main(List<String> args) {
throw DioError("error", "type");
}