用途:该技能整理 ERPNext hooks.py 配置中的错误处理模式,用于调试 doc_events 报错、调度任务失败、boot session 问题等场景。语法见 erpnext-syntax-hooks,实现流程见 erpnext-impl-hooks,兼容 v14/v15/v16。
主要能力:按钩子类型给出错误处理决策。doc_events 与控制器类似,validate/before_save 中 frappe.throw() 会整体回滚,on_update/after_insert/on_submit/on_cancel 中则文档已保存仅显示错误;多个应用可注册同一事件,前一个处理器抛错会阻断后续处理器。scheduler_events 无用户反馈,必须用 try/except 并调用 frappe.log_error(),且需手动 frappe.db.commit(),大批量处理可按批次提交。permission_query_conditions 出错时返回空字符串,has_permission 出错时返回 False 或 None,均不得抛错,否则破坏列表视图或文档访问。override_doctype_class 需在 try/except 中调用 super() 并重新抛出父类错误;extend_doctype_class(V16+)仅新增方法;extend_bootinfo 必须包裹 try/except 并提供回退值,否则页面加载失败。
使用方式:按钩子类型套用对应模式,如 validate 中收集错误后一次性 frappe.throw(),on_update 中将非关键操作隔离在 try/except 内,调度任务中记录上下文日志并提交事务。
限制:资料未提供安装命令、价格、平台支持范围及具体版本差异细节;参考文件包括 references/patterns.md、examples.md、anti-patterns.md。