# 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.
