From 2ae7266c2f7554209b751dc5a4e924c677870c35 Mon Sep 17 00:00:00 2001 From: Jack Christensen Date: Sat, 16 May 2020 09:51:26 -0500 Subject: [PATCH] Created Error Handling (markdown) --- Error-Handling.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Error-Handling.md diff --git a/Error-Handling.md b/Error-Handling.md new file mode 100644 index 0000000..47389b9 --- /dev/null +++ b/Error-Handling.md @@ -0,0 +1,16 @@ +# Error Handling + +pgx uses Go 1.13+ style error wrapping. That means that `errors.Is()` and `errors.As()` should be used instead of directly testing an error for equality or attempting a type assertion. + +If an error is returned from PostgreSQL then underlying error type will be a [*pgconn.PgError](https://pkg.go.dev/github.com/jackc/pgconn?tab=doc#PgError). + +```go +err = conn.QueryRow(context.Background(), "select 1 +").Scan(&greeting) +if err != nil { + var pgErr *pgconn.PgError + if errors.As(err, &pgErr) { + fmt.Println(pgErr.Message) // => syntax error at end of input + fmt.Println(pgErr.Code) // => 42601 + } +} +```