938 B
938 B
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.