FLUTTER ECOSYSTEM

erf/error_or

返回一个 ErrorOr 结果,其中包含值 T 或错误 Object。

错误或 项目封面
Stars
11
Forks
0
最近推送(UTC)
2025年7月7日
项目状态
未归档
Erlend GitHub avatar
GITHUB User

Erlend ↗

语言Dart

技术话题

此仓库发布的插件

使用的依赖

依赖清单 2 项
  • lints开发依赖^6.0.0
  • test开发依赖^1.26.2

原始 README

以下为英文项目原文快照,最新内容请访问 GitHub。

展开 / 收起项目 README

ErrorOr

Return a result ErrorOr with either a value T or an error Object.

Features

Alternative error handling by wrapping a function that may throw exceptions, in a function that handle these and returns an ErrorOr.

A more explicit way of defining a function which may return an error and avoid having to try/catch these functions.

ErrorOr can be used for both async and synchronous functions.

API

Create an ErrorOr instance by calling one of its factory constructors value or error.

Check hasError or hasValue, before calling error or value. If either is called without the proper check, an ErrorOrTypeError is thrown.

The convenient function ErrorOr.wrap, does the try/catch logic for you given a throwing function. It returns a FutureOr so can be used for both async and synchronous functions.

Examples

Async example

Future<ErrorOr<T>> asyncFuncWhichThrowsWrapper() async {
  try {
    return ErrorOr.value(await asyncFuncWhichThrows());
  } catch (e) {
    return ErrorOr.error(e);
  }
}

ErrorOr<String> valueOrError = await asyncFuncWhichThrowsWrapper();
if (valueOrError.hasError) {
  return valueOrError;
}
String value = valueOrError.value;

Or let ErrorOr.wrap handle the try/catch logic

ErrorOr<String> valueOrError = await ErrorOr.wrap(asyncFuncWhichThrows)
if (valueOrError.hasError) {
  return valueOrError;
}
String value = valueOrError.value;

Additional information

See my article Error handling in Dart and ErrorOr.

The "ErrorOr" is inspired by the SerenityOS ErrorOr type.

The Success/Failure pattern was inspired by result_type.

I'd like to keep this package minimal, but please get in touch on github if you have suggestions to improvements.