SuperAPI AI 工具集

erpnext-errors-serverscripts

测试与质量

查看项目

更新于 10-15 22:18

技能介绍

用途:该技能用于在 ERPNext Server Scripts 中处理错误,覆盖沙箱错误、frappe.throw 用法、服务端脚本校验以及 v14/v15/v16 的调试。语法见 erpnext-syntax-serverscripts,实现流程见 erpnext-impl-serverscripts。

主要能力与限制:沙箱(RestrictedPython)禁止 try/except、raise 和 import traceback。可用 frappe.throw() 停止执行并回滚事务、显示错误;frappe.log_error() 写入 Error Log;frappe.msgprint() 提示但不中断;frappe.publish_realtime() 发实时提示。frappe.throw 可带 title 与 exc 参数,API 脚本可用 frappe.ValidationError(417)、PermissionError(403)、DoesNotExistError(404)、AuthenticationError(401)、OutgoingEmailError(500)。

使用方式:按错误类型选择方法——校验错误用 throw,警告用 msgprint,调试用 log_error,API 错误用 throw 加 exc,调度任务用 log_error 并继续处理。文档给出文档事件校验、条件警告、安全数据库查询、API 错误响应、调度批处理隔离、权限查询回退等模式。

关键规则:数据库操作前先校验输入与存在性;SQL 中用户输入用 frappe.db.escape();调度脚本查询加 limit 并显式 frappe.db.commit();Before Save 中不要调用 doc.save();不要假设数据库值存在;尽量收集多个错误后一次性抛出。错误信息应清晰可操作,避免技术性堆栈式文案。

适用场景:ERPNext 服务端脚本的校验、API 与调度任务错误处理。限制:不适用于客户端脚本错误处理(见 erpnext-errors-clientscripts);具体版本差异与完整示例需参考其 references 文件。