登录
首页 >  Golang >  Go问答

在 Golang 中如何捕获并处理通过 RAISE EXCEPTION 引发的自定义 Postgres 异常?

来源:stackoverflow

时间:2024-02-06 12:54:23 462浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《在 Golang 中如何捕获并处理通过 RAISE EXCEPTION 引发的自定义 Postgres 异常?》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

我通过 pgx 将 postgres 与 golang 结合使用

我有一个类似于以下的触发函数:

create or replace function foo() 
returns trigger as
$$
begin
    if (bar = 'baz') then
        -- something
    else
        raise exception 'oops error';
    end if;
    return new;
end;
$$
language plpgsql;

如何在 go 代码中检查 oops 错误

我现在的做法是:

errOops := errors.New("ERROR: oops error (SQLSTATE P0001)")
err := myDBFunc()
if errors.Is(err, errOops) {

}

但我想知道除了依赖硬编码消息之外是否还有更好的方法。


正确答案


应该阅读维基:Error Handling in pgx

所以我可以这样做:

var pgErr *pgconn.PgError
if errors.As(err, &pgErr) && pgErr.Code == "P0001" {

}

或类似的内容。

您可以在 appendix A of the documentation 中找到该信息:它将是 raise_exception,sqlstate 是 p0001

理论要掌握,实操不能落!以上关于《在 Golang 中如何捕获并处理通过 RAISE EXCEPTION 引发的自定义 Postgres 异常?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>