errs

package
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 28, 2026 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	UnknownCode   = http.StatusInternalServerError
	UnknownReason = "UNKNOWN"
)

Variables

This section is empty.

Functions

func Code added in v0.2.0

func Code(err error) int

func Reason added in v0.2.0

func Reason(err error) string

Types

type Catalog added in v0.2.0

type Catalog struct {
	// contains filtered or unexported fields
}

Catalog 是启动时加载、请求期间只读的多语言文案目录。

func LoadCatalog added in v0.2.0

func LoadCatalog(fsys fs.FS, directory, defaultLocale string) (*Catalog, error)

LoadCatalog 从 directory 下按 locale 命名的 YAML 文件加载文案。

func (*Catalog) Render added in v0.2.0

func (catalog *Catalog) Render(acceptLanguage string, message Message) RenderResult

Render 根据 Accept-Language 和 Message 渲染文案。

type Error added in v0.2.0

type Error struct {
	Code    int32  `json:"code"`
	Reason  string `json:"reason"`
	Message string `json:"message"`
	// contains filtered or unexported fields
}

Error 是统一错误对象。导出字段是唯一允许进入客户端响应的内容。

func BadRequest added in v0.2.0

func BadRequest(message Message, opts ...Option) *Error

func ClientClosed added in v0.2.0

func ClientClosed(message Message, opts ...Option) *Error

func Clone added in v0.2.0

func Clone(err *Error) *Error

Clone 深拷贝 Error 的可变字段。

func Conflict added in v0.2.0

func Conflict(message Message, opts ...Option) *Error

func Forbidden added in v0.2.0

func Forbidden(message Message, opts ...Option) *Error

func FromError added in v0.2.0

func FromError(err error) *Error

FromError 将标准错误或 gRPC status 转换为统一错误。

func GatewayTimeout added in v0.2.0

func GatewayTimeout(message Message, opts ...Option) *Error

func InternalServer added in v0.2.0

func InternalServer(message Message, opts ...Option) *Error

func New

func New(code int, message Message, opts ...Option) *Error

New 创建错误并捕获创建位置的调用栈。

func NotFound added in v0.2.0

func NotFound(message Message, opts ...Option) *Error

func ServiceUnavailable added in v0.2.0

func ServiceUnavailable(message Message, opts ...Option) *Error

func TooManyRequests added in v0.2.0

func TooManyRequests(message Message, opts ...Option) *Error

func Unauthorized added in v0.2.0

func Unauthorized(message Message, opts ...Option) *Error

func Wrap

func Wrap(cause error, code int, message Message, opts ...Option) *Error

Wrap 包装底层错误。cause 为 nil 时返回 nil。

func (*Error) Error added in v0.2.0

func (e *Error) Error() string

func (*Error) Fields added in v0.2.0

func (e *Error) Fields() map[string]any

Fields 返回内部日志字段的副本。

func (*Error) GRPCStatus added in v0.2.0

func (e *Error) GRPCStatus() *status.Status

GRPCStatus 返回安全的 gRPC status,仅编码公开字段。

func (*Error) Is added in v0.2.0

func (e *Error) Is(target error) bool

Is 使用 code 和 reason 判断两个统一错误是否相同。

func (*Error) Unwrap added in v0.2.0

func (e *Error) Unwrap() error

func (*Error) WithCause added in v0.2.0

func (e *Error) WithCause(cause error) *Error

WithCause 返回带新 cause 的副本。

type Handler added in v0.2.0

type Handler struct {
	// contains filtered or unexported fields
}

Handler 集中文案渲染、客户端投影和内部诊断日志。

func NewHandler added in v0.2.0

func NewHandler(catalog *Catalog, logger modularlog.Logger) (*Handler, error)

func (*Handler) Handle added in v0.2.0

func (handler *Handler) Handle(ctx context.Context, err error, info RequestInfo) Result

Handle 记录完整诊断信息,并返回不含内部数据的客户端错误。

type Message added in v0.2.0

type Message struct {
	// contains filtered or unexported fields
}

Message 是与具体语言无关的文案定义。With 返回副本,可安全复用全局定义。

func Define added in v0.2.0

func Define(reason string, spec TemplateSpec) Message

Define 创建可被生成器静态发现的错误文案定义。 非法 reason 或零值模板属于编程错误,会立即 panic。

func (Message) Fallback added in v0.2.0

func (m Message) Fallback() string

func (Message) Params added in v0.2.0

func (m Message) Params() map[Name]any

Params 返回模板参数的副本。

func (Message) Reason added in v0.2.0

func (m Message) Reason() string

func (Message) With added in v0.2.0

func (m Message) With(key Name, value any) Message

With 绑定一个模板参数,不修改原 Message。

func (Message) WithParams added in v0.2.0

func (m Message) WithParams(values map[Name]any) Message

WithParams 绑定一组模板参数,不修改原 Message。

type Name added in v0.2.0

type Name string

Name 是错误文案中由编码人员声明的具名变量槽。

type Option added in v0.2.0

type Option func(*Error)

Option 为错误附加仅供诊断使用的信息。

func WithCause

func WithCause(cause error) Option

WithCause 设置底层错误。

func WithField

func WithField(key string, value any) Option

WithField 设置一个仅写入日志的上下文字段。

func WithFields added in v0.2.0

func WithFields(fields map[string]any) Option

WithFields 设置一组仅写入日志的上下文字段。

type RenderResult added in v0.2.0

type RenderResult struct {
	Message       string
	Locale        string
	Fallback      string
	TemplateError error
}

RenderResult 描述本次文案渲染及其回退情况。

type RequestInfo added in v0.2.0

type RequestInfo struct {
	Transport string
	Operation string
	RequestID string
	Language  string
}

RequestInfo 是 transport 交给错误处理器的请求关联信息。

type Result added in v0.2.0

type Result struct {
	Error  *Error
	Locale string
}

Result 是客户端错误投影。

type TemplateSpec added in v0.2.0

type TemplateSpec struct {
	// contains filtered or unexported fields
}

TemplateSpec 是由代码默认文案和有序变量槽组成的不可变模板定义。

func Template added in v0.2.0

func Template(pattern string, names ...Name) TemplateSpec

Template 创建模板定义。仅支持 %v 槽位和 %% 字面量百分号。 非法模板属于编程错误,会立即 panic。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL