babalae/better-genshin-impact · warning · Exception

请选择需要讨伐的首领

Error message

请选择需要讨伐的首领

What it means

Validate 首项校验:_taskParam.BossName 为空白即抛 Exception,要求用户先选择要讨伐的首领。这是任务启动前置条件,未配置则无法确定路线与战斗。

Source

Thrown at BetterGenshinImpact/GameTask/AutoBoss/AutoBossTask.cs:990

            ExpBasedPickupEnabled = false,
            KazuhaPartyName = string.Empty,
            BattleThresholdForLoot = -1,
            OnlyPickEliteDropsMode = "DisableAutoPickupForNonElite",
            Timeout = _taskParam.Timeout
        };
        return taskParam;
    }

    /// <summary>
    /// 校验自动首领讨伐启动所需的 Boss、战斗策略、讨伐次数、补充树脂开关、重试次数和路线文件。
    /// </summary>
    /// <exception cref="Exception">配置缺失、Boss 不支持、策略不存在或重试次数非法时抛出。</exception>
    /// <exception cref="FileNotFoundException">必需路线文件不存在时抛出。</exception>
    private void Validate()
    {
        if (string.IsNullOrWhiteSpace(_taskParam.BossName))
        {
            throw new Exception("请选择需要讨伐的首领");
        }

        if (!AutoBossData.IsSupportedBoss(_taskParam.BossName))
        {
            throw new Exception($"暂不支持首领:{_taskParam.BossName}");
        }

        if (_taskParam.ReviveRetryCount < 0)
        {
            throw new Exception("角色死亡后重试次数不能小于 0");
        }

        if (_taskParam.SpecifyRunCount && _taskParam.RunCount < 1)
        {
            throw new Exception("指定讨伐次数必须大于 0");
        }

        if (!_taskParam.SpecifyRunCount && (_taskParam.UseTransientResin || _taskParam.UseFragileResin))

View on GitHub (pinned to a7cb36712d)

Solutions

  1. 在启动自动首领讨伐前于界面选择目标 Boss。
  2. 检查 AutoBossParam 配置文件,确认 BossName 非空且为支持的 Boss 名称。
  3. 在 UI 层对 BossName 为空时禁用启动按钮,避免运行时才报错。
Defensive patterns

Strategy: validation

Validate before calling

if (string.IsNullOrWhiteSpace(_taskParam.BossName))
{
    // 在 UI 启动前禁用按钮,运行时无需到此
}

Prevention

When it happens

Trigger: 用户在配置界面未选择 Boss 就启动任务;BossName 序列化丢失;配置文件被手动清空。

Common situations: 新用户首次使用未选 Boss;切换配置档后 BossName 未同步;UI 绑定异常导致值为空。

Related errors


AI-assisted analysis of babalae/better-genshin-impact@a7cb36712d (2026-08-13). Data as JSON: /api/errors/0790f6bae8f63f84. Report an issue: GitHub.