Golangのerror.Is()はラップされたエラーも検出してくれる
code:error.go
err := myErrors.ErrPageNotFound
wrappedErr := fmt.Errorf("database operation failed: %w", err)
// 直接比較の場合
switch wrappedErr {
case dfErrors.ErrPageNotFound: // false - 一致しない
// ここは実行されない
}
// error.Isを使う場合
switch {
case errors.Is(wrappedErr, dfErrors.ErrPageNotFound): // true - 元のエラーを検出
// ここが実行される
}
error.Is()は内部でエラーチェーンをたどって、ラップされた元のエラーも見つけてくれる