fx_exception 0.0.1+4 copy "fx_exception: ^0.0.1+4" to clipboard
fx_exception: ^0.0.1+4 copied to clipboard

fx exception - 统一异常追踪机制

fx_exception #

Fx 家族统一异常追踪机制。提供 CodeTraceFxExceptionTraceMixin 四个核心能力,各模块基于此扩展自己的异常体系。

核心概念 #

协议 职责
Code 错误码 mixin,任何 enum 通过 with Code 接入
Trace 异常信息 mixin,统一结构:code + message + error + stack
FxException<C> 模块异常通用基类,避免重复声明 Trace 字段
TraceMixin 异常分发 mixin,支持多监听器

使用 #

import 'package:fx_exception/fx_exception.dart';

自定义错误码 #

enum BizCode with Code {
  tokenExpired(401),
  orderNotFound(10001),
  ;
  @override
  final int code;
  const BizCode(this.code);
}

自定义异常 #

class BizException extends FxException<BizCode> {
  const BizException(
    super.code,
    super.message, [
    super.error,
    super.stack,
  ]);
}

监听异常 #

// 任何 with TraceMixin 的类都可以分发异常
class MyService with TraceMixin {
  void doSomething() {
    // ...
    notifyTrace(BizException(BizCode.tokenExpired, 'token 过期'));
  }
}

final service = MyService();
service.addTraceListener((trace) {
  print('${trace.code} - ${trace.message}');
});

内置 #

  • RequestErrorCode — 框架级错误码(convert / emptyData / exception)
  • RequestException — 请求异常,fx_dio 内部使用

日志、上报和界面提示属于宿主策略,不由本包内置;使用模块可自行注册 addTraceListener

TraceMixin 在分发时会隔离单个监听器的异常;需要记录该异常时,可重写 onTraceListenerError

0
likes
125
points
10
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

fx exception - 统一异常追踪机制

Repository (GitHub)
View/report issues

License

unknown (license)

More

Packages that depend on fx_exception