Documentation
¶
Index ¶
- Constants
- func AppendCheckpoint(err error, options ...CheckpointOption) error
- func AppendMessage(err error, msg string) error
- func AppendMessagef(err error, format string, args ...any) error
- func SetStackTraceOder(order StackTraceOrder)
- type CheckpointOption
- type CustomError
- func (e *CustomError) AddMessage(msg string)
- func (e *CustomError) AddMessagef(format string, args ...any)
- func (e *CustomError) Code() string
- func (e *CustomError) Detail() string
- func (e *CustomError) Error() string
- func (e *CustomError) Format(f fmt.State, c rune)
- func (e *CustomError) LogValue() slog.Value
- func (e *CustomError) Messages() []message
- func (e *CustomError) Unwrap() error
- type Option
- type PrettyTextHandler
- type StackTraceOrder
Constants ¶
const ( // ErrUnknown は定義されていないエラー全般を表す ErrUnknown errorKind = iota // システム/インフラ関連 ErrSystemInternal // 内部システムエラー(初期化エラーを含む) ErrResourceExhausted // リソース枯渇 ErrTimeout // タイムアウト // データベース関連 ErrDBConnection // DB接続エラー ErrDBOperation // DBオペレーションエラー ErrDBConstraint // DB制約違反 ErrDBNotFound // レコード未検出 ErrDBDuplicate // 重複レコード // API/HTTP関連 ErrAPIRequest // 不正なAPIリクエスト ErrAPIResponse // APIレスポンスエラー ErrRateLimit // レート制限超過 // 認証/認可関連 ErrAuthentication // 認証エラー ErrAuthorization // 認可エラー ErrTokenExpired // トークン期限切れ ErrTokenInvalid // 不正なトークン // バリデーション関連 ErrValidation // バリデーションエラー(無効な入力を含む) ErrInvalidFormat // フォーマットエラー ErrMissingField // 必須フィールド欠落 ErrInvalidState // 不正な状態 // ビジネスロジック関連 ErrBusinessRule // ビジネスルール違反 ErrOperationFailed // 操作失敗 ErrInvalidOperation // 不正な操作 ErrResourceNotFound // リソース未検出 // --- 新しい ErrorKind は常にこの上↑に追加する --- // // ErrorKindCount はセンチネル値(sentinel/配列やリストの終端を示す特別な値)であって、上記の要素数として使うためのもので、 // 最下部にあることで iota によって、要素が追加されるたびにその値が増える. // この一番最下部にあるべきものである ErrorKindCount の値と len(constructors) の値をチェックすることで自動的にずれを検知できる // ずれ = constructorsへの定義追加漏れ ErrorKindCount )
ErrXxxの定義はすべてここで行う
Variables ¶
This section is empty.
Functions ¶
func AppendCheckpoint ¶
func AppendCheckpoint(err error, options ...CheckpointOption) error
AppendCheckpoint
func AppendMessage ¶
AppendMessage は err が *CustomError の場合、AppendMessage の呼び出し元をキャプチャしてコンテキストを追加する
func AppendMessagef ¶
AppendMessagef は err が *CustomError の場合、AppendMessagef の呼び出し元をキャプチャしてコンテキストを追加する
func SetStackTraceOder ¶
func SetStackTraceOder(order StackTraceOrder)
Types ¶
type CheckpointOption ¶
type CheckpointOption func(*checkpoint)
func WithCheckpointMessage ¶
func WithCheckpointMessage(msg string) CheckpointOption
func WithCheckpointMessagef ¶
func WithCheckpointMessagef(format string, args ...any) CheckpointOption
type CustomError ¶
type CustomError struct {
// contains filtered or unexported fields
}
CustomError はカスタムエラー型で、エラーコード、詳細メッセージ、実行時コンテキスト情報、原因エラー、およびスタックトレースを保持
func (*CustomError) AddMessage ¶
func (e *CustomError) AddMessage(msg string)
AddMessage は作成後に新しいコンテキストメッセージを追加し、直接の呼び出し元をキャプチャする
func (*CustomError) AddMessagef ¶
func (e *CustomError) AddMessagef(format string, args ...any)
AddMessagef は作成後に新しいコンテキストメッセージを追加し、直接の呼び出し元をキャプチャする
func (*CustomError) Error ¶
func (e *CustomError) Error() string
Error は CustomError のコード、詳細メッセージ、追加されたコンテキスト情報、および原因エラーを組み合わせた文字列表現を返す 組み込みの error インターフェースを実装
func (*CustomError) Format ¶
func (e *CustomError) Format(f fmt.State, c rune)
Format は fmt.Formatter を実装し、%+v指定子でスタックトレースの出力をサポートする
func (*CustomError) LogValue ¶
func (e *CustomError) LogValue() slog.Value
LogValue は構造化ロギングのための slog.LogValuer を実装したもの
func (*CustomError) Messages ¶
func (e *CustomError) Messages() []message
Messages はコンテキストメッセージのスライスを返す
type Option ¶
type Option func(*CustomError)
Functional Options Pattern
func WithMessage ¶
WithMessage はフォーマットなしでコンテキストメッセージを追加する 呼び出し元のファイルと行番号をキャプチャする
func WithMessagef ¶
WithMessagef はフォーマット付きでコンテキストメッセージを追加する 呼び出し元のファイルと行番号をキャプチャする
type PrettyTextHandler ¶
PrettyTextHandler は slog.Handler をラップし、CustomError のスタックトレースを整形して出力する
func NewPrettyTextHandler ¶
func NewPrettyTextHandler(w io.Writer, o *slog.HandlerOptions) *PrettyTextHandler
NewPrettyTextHandler は出力先とハンドラオプションを指定して PrettyTextHandler を生成する
type StackTraceOrder ¶
type StackTraceOrder string
StackTraceの順番設定 * Go的には、一般的には逆順(leaf-first) に並べる
- 例) エラーが発生したフレーム(newest)を先頭 → runtime.goexit (oldest) を最後
* 一番古いフレームを先頭 (root-first) に並べる場合
- Sentry や一部の APM に JSON を送るとき
- Sentry の Stack Trace Interface は oldest → newest を要求
- Python、Node.js などのトレースバックは基本root-first
const ( StackTraceOrderOldestFirst StackTraceOrder = "oldest_first" StackTraceOrderNewestFirst StackTraceOrder = "newest_first" )