MixinErrorHandler
基本信息
| 属性 | 值 |
|---|---|
| 类名 | io.github.legacymoddingmc.unimixins.compat.MixinErrorHandler |
| 文件 | module-compat/src/main/java/…/compat/MixinErrorHandler.java |
| 行数 | 35 |
| 实现 | IMixinErrorHandler |
| 启用版本 | Minecraft 1.7.10 |
功能
收集 mixin 应用期错误并归类存放,供崩溃报告输出。 与 EnhanceCrashReportsTransformer 配套: transformer 挂钩崩溃报告,本类提供要写进去的数据。
状态
private static Map<String, List<String>> caughtMixinErrors = new HashMap<>();
键是目标类名,值是错误消息列表(存 th.toString(),非 Throwable 本身)。
static 且非 final,无清理入口。
两个回调
| 回调 | 归类方式 |
|---|---|
onPrepareError(config, th, mixin, action) |
遍历 mixin.getTargetClasses(),对每个目标类各记一次 |
onApplyError(targetClassName, th, mixin, action) |
直接按 targetClassName 记一次 |
实现要点
⚠️ 两个方法都 return null —— 即把 ErrorAction 交回 Mixin 自行处理,
本类只记录、不干预 mixin 错误。
说「它会吞掉 mixin 错误」是错的;它是旁路记录器。
⚠️ onPrepareError 的归类粒度是 mixin.getTargetClasses() 的每个元素 ——
一个 mixin 若声明多个 target,同一条错误会被记多次(每个 target 一条)。
按「一 mixin 一条」去统计错误数会偏高。
⚠️ 存的是 th.toString() 字符串而非异常对象,
所以堆栈信息在此就丢失了 —— caughtMixinErrors 里没有可打印的 stack trace。
⚠️ 静态 Map 从不清理,长跑服务端会持续累积。
本类无 clear() 方法。
相关条目
- module-compat - 所属模块
- EnhanceCrashReportsTransformer - 消费本类数据
- CompatConfig -
enhanceCrashReports开关