1 line
938 B
Markdown
1 line
938 B
Markdown
# 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:
|
|
|
|
```go
|
|
var ErrInvalidInput = errors.Register("app", 1001, "invalid input")
|
|
```
|
|
|
|
You can wrap errors to add context:
|
|
|
|
```go
|
|
return errors.Wrap(ErrInvalidInput, "missing field")
|
|
```
|
|
|
|
### Getting ABCI Error Info
|
|
|
|
To convert an error to ABCI-compatible output:
|
|
|
|
```go
|
|
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:
|
|
|
|
```bash
|
|
export COSMOS_SDK_SUPPRESS_DUPLICATE_ERROR_CODE_LOG=true
|
|
```
|
|
|
|
Useful in tests or modules that may re-register the same error.
|