Skip to content

Exception类 ​

可以捕获,并且可以安全处理

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

Error类 ​

一般用在不可恢复,容易崩溃的情况

名称说明
AbstractClassInstantiationError抽象类实例化错误
ArgumentError参数错误
AssertionError断言错误
AsyncError异步错误
CastErrorCast 错误
ConcurrentModificationError并发修改错误
CyclicInitializationError周期初始错误
FallThroughErrorFall Through 错误
JsonUnsupportedObjectErrorjson 不支持错误
NoSuchMethodError没有这个方法错误
NullThrownErrorNull 错误
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");

MIT License