cosmos-sdk/errors
2025-10-06 13:24:02 -04:00
..
abci_test.go
abci.go
CHANGELOG.md
doc.go
errors_test.go
errors.go
go.mod chore: minor deps (#25405) 2025-10-06 13:24:02 -04:00
go.sum chore: minor deps (#25405) 2025-10-06 13:24:02 -04:00
handle.go
README.md
stacktrace_test.go
stacktrace.go

Errors

This package provides structured error handling for Cosmos SDK apps. It supports:

  • Custom error codes and messages
  • Stack traces when wrapping errors
  • ABCI-compatible responses for Tendermint
  • Optional gRPC status codes

Usage

Registering Errors

Define root errors with a unique code and description:

var ErrInvalidInput = errors.Register("app", 1001, "invalid input")

You can wrap errors to add context:

return errors.Wrap(ErrInvalidInput, "missing field")

Getting ABCI Error Info

To convert an error to ABCI-compatible output:

codespace, code, log := errors.ABCIInfo(err, debug)

Set debug = true to include stack traces in logs.

Suppress Duplicate Error Warnings

To prevent logging when the same error is registered twice, set:

export COSMOS_SDK_SUPPRESS_DUPLICATE_ERROR_CODE_LOG=true

Useful in tests or modules that may re-register the same error.