PL/pgSQL中能否在WHEN OTHERS THEN块内调用函数?附示例
能否在PL/pgSQL的WHEN OTHERS THEN异常处理块中调用函数?
当然可以!在PL/pgSQL的WHEN OTHERS THEN异常处理块里调用自定义函数是完全合法的,而且这是一种很常见的实践——通常用来实现统一的异常日志记录、告警通知或者通用的异常清理逻辑。
你给出的示例代码就完全没问题:
EXCEPTION WHEN OTHERS THEN my_fnc('a key ID', 'Custom message', SQLERRM || ' - ' || SQLSTATE);
这里把PL/pgSQL内置的错误信息变量SQLERRM(具体错误消息)和SQLSTATE(标准错误状态码)拼接后传给my_fnc,是非常典型的异常信息收集用法——通过自定义函数把异常详情统一处理,比如写入专门的日志表、发送运维告警等。
不过有个小提醒:要确保你调用的my_fnc本身不会抛出新的异常,否则可能会导致嵌套异常,增加问题排查的难度。如果函数内部存在可能出错的操作,建议在函数内部也做好异常处理,或者在调用时额外添加一层防护逻辑。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

