F_SYSTEM_* 表示命令定义或应用注册无效。这类错误面向开发者:func 会立即停止,不会把它们传递给命令局部或全局错误处理器。
当 funcgo 在开发或构建检查中识别到系统错误时,它会保留原始错误输出,并在最底部添加对应页面的链接。你可以根据错误码查看约束说明、最小复现和修复方式。
2.x 当前版本
当前版本可能输出的系统错误
-
F_SYSTEM_CANNOT_INFER_VALUE_TYPE无法推断值类型
@Value 属性没有受支持的运行时类型,也没有显式声明解析类型。
-
F_SYSTEM_DUPLICATE_COMMAND_TOKEN命令 token 重复
两个已注册命令使用了相同的名称或 alias。
-
F_SYSTEM_DUPLICATE_OPTION_TOKEN选项 token 重复
同一命令中的字段、子选项、处理器 flag 或处理器 path 占用了相同 token。
-
F_SYSTEM_EXPECTED_ARRAY_PARAM参数应为数组
path、SubOptions、Enum、DependsOn 或 Exclusive 等装饰器参数不是数组。
-
F_SYSTEM_HANDLER_ALIAS_REQUIRES_FLAG处理器 alias 需要 flag
@Handler 声明了 alias,却没有声明该 alias 所缩写的 flag。
-
F_SYSTEM_HANDLER_FLAG_PATH_CONFLICT处理器 flag 与 path 冲突
同一个 @Handler 同时尝试通过选项 flag 和位置 path 选择方法。
-
F_SYSTEM_HANDLER_PATH_ALIAS_CONFLICT处理器 path 不支持 alias
通过 path 选择的 @Handler 同时声明了仅适用于 flag 的 alias。
-
F_SYSTEM_INVALID_FIELD_DECORATOR_TARGET字段装饰器目标无效
字段选项或字段校验装饰器被用于实例属性以外的目标。
-
F_SYSTEM_INVALID_METHOD_DECORATOR_TARGET方法装饰器目标无效
@Handler 或 @Catch 被用于实例方法以外的目标。
-
F_SYSTEM_INVALID_OPTION_ALIAS选项 alias 无效
命令、字段选项、子选项或处理器 flag 使用了超过一个字符的 alias。
-
F_SYSTEM_INVALID_TOKEN命令或选项 token 无效
命令、选项、alias、flag 或 path token 为空、以连字符开头,或包含空白。
-
F_SYSTEM_MISSING_HANDLER缺少命令处理器
命令没有定义任何 @Handler 方法。
-
F_SYSTEM_MISSING_REQUIRED_PARAM缺少必要的装饰器参数
命令或选项声明缺少必要名称或其他独立值。
-
F_SYSTEM_MULTIPLE_DEFAULT_HANDLERS存在多个默认处理器
同一命令声明了多个不带 flag 或 path 的 @Handler。
-
F_SYSTEM_MULTIPLE_MAJOR_COMMANDS存在多个主命令
应用把多个命令注册为根命令。
-
F_SYSTEM_MULTIPLE_MISSING_COMMANDS存在多个缺失命令处理器
应用为未知命令名称注册了多个回退处理器。
-
F_SYSTEM_NO_MATCHING_HANDLER没有匹配的处理器
命令存在处理器,但当前调用没有匹配任何 path 或 flag,也不存在默认处理器。
-
F_SYSTEM_UNKNOWN_HANDLER注册了未知处理器
应用中注册的类不包含任何 func 命令或错误处理器元数据。
-
F_SYSTEM_UNSUPPORTED_ARRAY_TYPE不支持的 Array 选项类型
选项使用了通用 Array 构造函数,而不是 func 支持的重复字符串解析器。
1.x 版本
为旧版本和已有链接保留的错误码
-
F_SYSTEM_DUPLICATE_HANDLER处理器注册重复
两个命令定义占用了同一应用作用域内必须唯一的处理器角色或 token。
-
F_SYSTEM_INVALID_PARAM_TYPE装饰器参数类型无效
装饰器目标或参数不符合 func 所要求的运行时结构。
-
F_SYSTEM_INVALID_PARAM_VALUE装饰器参数值无效
装饰器参数的基本类型正确,但违反了 func 的命名或处理器结构约束。
-
F_SYSTEM_MISSING_PARAM_TYPES缺少参数类型元数据
较旧版本的 func 运行时无法读取依赖注入所需的构造函数参数类型。
-
F_SYSTEM_MISSING_PROVIDER缺少注入 provider
较旧版本的 func 运行时无法为构造函数参数找到 provider。