SuperAPI AI 工具集

flutter-error-handling

通用与其它

查看项目

更新于 10-15 23:42

技能介绍

用途:为 Flutter 项目提供一套类型安全的错误处理模式,把可预期的失败用类型表达而非抛出异常,让调用方在编译期被迫处理失败分支,减少运行时遗漏的 UI 错误路径。

核心机制:定义 abstract interface class Error {} 作为标记接口;用 freezed 声明 sealed class Result<D, E extends Error>,包含 Result.success(D data) 与 Result.error(E error) 两个分支。sealed 使 switch 必须覆盖全部情况,遗漏会得到编译提示。错误按功能用 enum 定义,每个值在 toString() 中给出面向用户的消息,例如 NetworkError 的 requestTimeout、noInternet、serverError、unknown。

使用方式:UseCase / Repository 返回 Future<Result<D, E>> 并显式写出数据与错误类型;Data 层捕获平台或 HTTP 异常(如 SocketException、TimeoutException)并转换为 Result.error;ViewModel 中用 switch 匹配 ResultSuccess<D, E>() 与 ResultError<D, E>(),内层再对错误 enum 做穷举 switch。错误传到 UI 有两种方式:一次性提示用 StreamController 事件流配合 SnackBar,持续状态(如错误横幅)放入 State 字段并在重试或关闭时清空。

适用场景:需要统一错误模型、希望在编译期保证失败分支被处理的 Flutter 分层项目。

限制与约定:一个 Result 只承载一个错误,不支持多错误列表;异常只在最底层捕获并转换,Presentation 层不应出现 try/catch;避免返回裸 Future<T> 用 throw 传递失败,避免用 Exception 作为错误类型,避免用 default 兜底 switch。安装命令、具体版本与收费信息资料未提供。