This refactors a bit of the http handler code. Moves error handling for handler functions to a generic handler. This also has a side-effect of being able to propagate errors from the provider to send the correct status code, provided the error type matches a pre-defined interface.
13 lines
875 B
Go
13 lines
875 B
Go
// Package strongerrors defines a set of error interfaces that packages should use for communicating classes of errors.
|
|
// Errors that cross the package boundary should implement one (and only one) of these interfaces.
|
|
//
|
|
// Packages should not reference these interfaces directly, only implement them.
|
|
// To check if a particular error implements one of these interfaces, there are helper
|
|
// functions provided (e.g. `Is<SomeError>`) which can be used rather than asserting the interfaces directly.
|
|
// If you must assert on these interfaces, be sure to check the causal chain (`err.Cause()`).
|
|
//
|
|
// A set of helper functions are provided to take any error and turn it into a specific error class.
|
|
// This frees you from defining the same error classes all over your code. However, you can still
|
|
// implement the error classes ony our own if you desire.
|
|
package strongerrors
|