ErrorOr
返回一个 `ErrorOr` 结果,该结果包含一个值 `T` 或一个错误 `Object`。
特点
始终从异步函数返回一个 `ErrorOr` 值。让被调用的函数处理错误并返回一个 `ErrorOr`。调用者随后可以 `await` 结果,而无需 `try catch`。
`ErrorOr` 的一个子类包含预期的值 `T` 或一个错误 `Object`(通常是从 `try catch` 返回的 `Exception`)。
在内部,我们创建 `ErrorOr` 的私有子类,`_ValueWrapper` 或 `_ErrorWrapper`,其中包含预期的非空值。
`ErrorOr` 也可用于非异步函数——适用于 Flutter 和 Dart。
入门
让一个函数返回一个 `Future
通过调用其工厂构造函数 `value` 或 `error` 来创建 `ErrorOr` 实例。
在调用 `error` 或 `value` 之前,检查 `hasError` 或 `hasValue`。如果任一被调用而没有进行适当的检查,则会抛出 `ErrorOrTypeError`。
用法
示例
Future<ErrorOr<LocationPermission>> checkPermission() async {
try {
return ErrorOr.value(await Geolocator.checkPermission());
} catch (e) {
return ErrorOr.error(e);
}
}
ErrorOr<LocationPermission> errorOrPermission = await checkPermission();
if (errorOrPermission.hasError) {
return errorOrPermission;
}
LocationPermission permission = errorOrPermission.value;
附加信息
我想保持这个包的最小化,但如果您有改进的建议,请在 GitHub 上联系我。
这个名字的灵感来自 SerenityOS 的 `ErrorOr` 类型。
成功/失败模式的灵感来自 result_type。