Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: aljo242 <alex@interchainlabs.io> |
||
|---|---|---|
| .. | ||
| abci_test.go | ||
| abci.go | ||
| CHANGELOG.md | ||
| doc.go | ||
| errors_test.go | ||
| errors.go | ||
| go.mod | ||
| go.sum | ||
| 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.