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