{"record":{"id":"e828c0f020b65ef7","repo":"babalae/better-genshin-impact","slug":"filename","errorCode":null,"errorMessage":"路径文件解析失败：{fileName}","messagePattern":"路径文件解析失败：(.+?)","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"BetterGenshinImpact/GameTask/AutoBoss/AutoBossTask.cs","lineNumber":1118,"sourceCode":"        _logger.LogInformation(\"{Name}：前往 {Boss}\", Name, _taskParam.BossName);\n        if (AutoBossData.IsNoPathingSupportBoss(_taskParam.BossName))\n        {\n            await RunPathingFile($\"{_taskParam.BossName}强制传送.json\");\n            await RunKeyMouseFile($\"{_taskParam.BossName}键鼠前往.json\");\n            return;\n        }\n\n        await RunPathingFile($\"{_taskParam.BossName}前往.json\");\n    }\n\n    /// <summary>\n    /// 加载并执行 AutoBoss 资产目录中的寻路 JSON 文件。\n    /// </summary>\n    /// <param name=\"fileName\">路线文件名。</param>\n    private async Task RunPathingFile(string fileName)\n    {\n        await _returnMainUiTask.Start(_ct);\n        var task = PathingTask.BuildFromFilePath(BuildPathingAssetPath(fileName)) ?? throw new Exception($\"路径文件解析失败：{fileName}\");\n        await RunPathingTask(task);\n    }\n\n    /// <summary>\n    /// 使用自动首领讨伐的队伍配置执行寻路任务。\n    /// </summary>\n    /// <param name=\"task\">已经解析好的寻路任务。</param>\n    private async Task RunPathingTask(PathingTask task)\n    {\n        var executor = new PathExecutor(_ct)\n        {\n            PartyConfig = BuildPathingPartyConfig()\n        };\n        await executor.Pathing(task);\n    }\n\n    /// <summary>\n    /// 构建首领路线执行时使用的队伍配置，禁止寻路过程自动切队和自动战斗。","sourceCodeStart":1100,"sourceCodeEnd":1136,"githubUrl":"https://github.com/babalae/better-genshin-impact/blob/a7cb36712dcb409be610257d877fcea3597e9d6b/BetterGenshinImpact/GameTask/AutoBoss/AutoBossTask.cs#L1100-L1136","documentation":"RunPathingFile 用 PathingTask.BuildFromFilePath 解析资产目录下的寻路 JSON，返回 null 即抛 Exception，表示文件存在但内容无法解析为有效 PathingTask（格式错误或 schema 不匹配）。","triggerScenarios":"JSON 语法错误（缺括号、尾逗号）；schema 字段缺失或类型不符；文件编码异常（BOM/UTF-8 误判）；文件被截断或为空；路线文件版本与当前 PathingTask 模型不兼容。","commonSituations":"用户手动编辑路线文件出错；资产文件随版本更新 schema 变化但文件未更新；第三方路线文件格式不兼容；下载/复制不完整。","solutions":["用 JSON 校验工具检查报错文件名对应文件的语法。","对照当前 PathingTask 的 schema/示例路线文件修正字段。","重新获取/恢复与程序版本匹配的路线文件。","查看 BuildFromFilePath 内部日志定位具体解析失败字段。"],"exampleFix":"// before\nvar task = PathingTask.BuildFromFilePath(BuildPathingAssetPath(fileName)) ?? throw new Exception($\"路径文件解析失败：{fileName}\");\n\n// after\nvar path = BuildPathingAssetPath(fileName);\nvar task = PathingTask.BuildFromFilePath(path);\nif (task == null)\n{\n    throw new Exception($\"路径文件解析失败：{fileName}（路径={path}），请检查 JSON 格式与字段\");\n}","handlingStrategy":"validation","validationCode":"var path = BuildPathingAssetPath(fileName);\nif (!File.Exists(path)) throw new FileNotFoundException(path);\n// 进一步：尝试 JsonDocument.Parse 预校验语法\nvar json = File.ReadAllText(path);\nusing (JsonDocument.Parse(json)) { }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["路线文件用 JSON 校验工具检查语法。","保持路线文件 schema 与程序版本匹配。","BuildFromFilePath 失败时输出文件路径与具体字段错误。"],"tags":["pathing","json","parse","assets","genshin","autoboss"],"backgroundTag":null,"analyzedSha":"a7cb36712dcb409be610257d877fcea3597e9d6b","analyzedAt":"2026-08-13T16:44:57.548Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}