使用codegeex生成符合go官方错误处理规范的代码,需通过精准提示词、修复功能、ide模板、多行上下文引导及“解释并修复”五种方法,确保生成if err != nil { return ..., err }结构、禁用else与panic、自动补全defer和错误检查。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您在使用 CodeGeeX 编写 Go 代码时,希望自动生成符合 Go 官方错误处理规范(如 if err != nil 模式)的健壮代码,但生成结果缺少错误检查、嵌套过深或未按 idiomatic Go 风格组织,则可能是提示语义不明确或上下文缺失。以下是实现 Go 错误处理规范代码生成的多种方法:
一、使用精准中文提示词明确错误处理结构
CodeGeeX 对自然语言指令敏感,需显式要求“标准 Go 错误处理模板”,避免模糊表述如“处理错误”或“加个判断”。模型将据此生成带 err 检查、early return、无 else 嵌套的代码。
1、在编辑器中新建 Go 文件,光标置于函数定义起始处或空行位置。
2、输入如下完整提示(含关键词与约束):“用 Go 写一个读取文件内容的函数,接收 string 路径参数,返回 []byte 和 error;必须使用 if err != nil { return nil, err } 格式,禁止 else 分支,禁止 panic,使用 os.ReadFile”。
3、按下 Ctrl+Enter 触发交互模式,从候选列表中选择含清晰 err 判断逻辑的代码片段。
二、在已有代码上启用“修复错误”功能补全 if err
当已有调用可能返回 error 的函数(如 json.Unmarshal、http.Get)但未做错误处理时,CodeGeeX 可基于当前语法树自动插入标准错误检查块,无需重写整段逻辑。
1、选中未处理 error 的函数调用行,例如:data := json.Unmarshal(b, &v)。
2、右键点击该行,在弹出菜单中选择“使用CodeGeeX修复”。
3、CodeGeeX 将识别缺失 error 绑定,生成形如 if err != nil { return err } 的修正块,并自动调整变量声明为 err := json.Unmarshal(b, &v)。
三、配置 IDE 模板强制注入 if err 模式
通过预设代码模板,使 CodeGeeX 在生成涉及 I/O、网络、编码等高风险操作时,默认包裹标准错误处理结构,减少手动补全频率。
1、打开 CodeGeeX 设置面板(VSCode:Ctrl+Shift+P → “CodeGeeX: Open Settings”;IDEA:侧边栏 CodeGeeX → 设置图标)。
2、进入“提示模式(Prompt Mode)”设置页,点击“添加模板”。
CodeGeeX 2.21.0是智谱AI推出的AI编程助手版本,对Inline Chat功能进行了重大优化,包括UI设计升级、支持流式输出以提升响应速度,并新增“查看思路”按钮以便理解代码原理。同时,该版本在编辑器中新增CodeLens控件,支持一键“解释”代码或“添加注释”。目前该工具对个人开发者免费开放。
3、填入模板名称:“Go 标准错误处理包装”,模板内容为:if err != nil { return $0 },其中 $0 为光标占位符。
4、在编写调用函数后,选中该行,按 Alt/Option+T 调出模板列表,选择该模板即可一键插入并定位光标至 return 后。
四、利用多行上下文引导生成带 defer+if err 的完整函数
CodeGeeX 支持基于多行已有代码推断意图。若已写出资源打开语句(如 os.Open),可借助其上下文自动生成含 defer Close 和 if err 处理的闭环函数体。
1、先手动输入两行关键上下文:
f, err := os.Open(path)
if err != nil { return err }
2、将光标置于第二行末尾,按 Ctrl+Enter 启动交互模式。
3、CodeGeeX 将识别资源持有模式,生成后续代码:defer f.Close()、data, err := io.ReadAll(f)、if err != nil { return err } 等连续语句,保持单一 err 处理路径。
五、粘贴带错误但无处理的代码后使用“解释并修复”功能
当从旧项目复制一段存在潜在 panic 或忽略 error 的 Go 代码(如直接使用 log.Fatal 替代返回 error)时,可借助 CodeGeeX 的终端/编辑器双通道修复能力重构为标准风格。
1、将待修复代码块完整粘贴至编辑器新文件中。
2、右键任意一行,选择“使用CodeGeeX解释”,确认其指出“此处忽略 error 可能导致程序崩溃,不符合 Go 错误处理惯例”。
3、再次右键,选择“使用CodeGeeX修复”,模型将输出替换版本:所有 log.Fatal 替换为 return err,新增 err 参数签名,调整调用方接收逻辑。










