35 lines
1.3 KiB
Go
35 lines
1.3 KiB
Go
|
/*
|
||
|
Package errors implements custom error interfaces for cosmos-sdk.
|
||
|
|
||
|
Error declarations should be generic and cover broad range of cases. Each
|
||
|
returned error instance can wrap a generic error declaration to provide more
|
||
|
details.
|
||
|
|
||
|
This package provides a broad range of errors declared that fits all common
|
||
|
cases. If an error is very specific for an extension it can be registered outside
|
||
|
of the errors package. If it will be needed my many extensions, please consider
|
||
|
registering it in the errors package. To create a new error instance use Register
|
||
|
function. You must provide a unique, non zero error code and a short description, for example:
|
||
|
|
||
|
var ErrZeroDivision = errors.Register(9241, "zero division")
|
||
|
|
||
|
When returning an error, you can attach to it an additional context
|
||
|
information by using Wrap function, for example:
|
||
|
|
||
|
func safeDiv(val, div int) (int, err) {
|
||
|
if div == 0 {
|
||
|
return 0, errors.Wrapf(ErrZeroDivision, "cannot divide %d", val)
|
||
|
}
|
||
|
return val / div, nil
|
||
|
}
|
||
|
|
||
|
The first time an error instance is wrapped a stacktrace is attached as well.
|
||
|
Stacktrace information can be printed using %+v and %v formats.
|
||
|
|
||
|
%s is just the error message
|
||
|
%+v is the full stack trace
|
||
|
%v appends a compressed [filename:line] where the error was created
|
||
|
|
||
|
*/
|
||
|
package errors
|