Skip to content

Commit c28bd53

Browse files
committed
完善 errno 函数注释
1 parent a9adc53 commit c28bd53

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

errno/error.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ type wrapError struct {
1212
msg string
1313
}
1414

15+
// Wrap 包装一个错误,这个辅助 wrap 实现错误包装使用的
16+
// 当被包装的 err 为 nil 时会返回自身
17+
// 当首次被包装且 err 为 Errno 实现,这不设置错误消息
18+
// 使用 `old err, new err` 格式存储错误信息
1519
func (w *wrapError) Wrap(err error) *wrapError {
1620
if err == nil {
1721
return w
@@ -34,13 +38,16 @@ func (w *wrapError) Wrap(err error) *wrapError {
3438
return &wrapError{old: w, new: err, msg: msg}
3539
}
3640

41+
// Error 响应一个被格式化的错误文本,这是 error 接口的实现
3742
func (w *wrapError) Error() string {
3843
if w == nil {
3944
return ""
4045
}
4146
return w.msg
4247
}
4348

49+
// Is 这是 errors.Is 接口实现,可以通过 errors.Is 函数判断是否包含某个具体的错误
50+
// 更详细的细节请浏览 errors.Is 文档
4451
func (w *wrapError) Is(target error) bool {
4552
if w == target {
4653
return true
@@ -56,6 +63,8 @@ func (w *wrapError) Is(target error) bool {
5663
return false
5764
}
5865

66+
// As 这是 errors.As 接口实现,可以通过 errors.As 函数判断是否包含某个类型的错误,并把发现的第一个错误赋值给 target
67+
// 更详细的细节请浏览 errors.As 文档
5968
func (w *wrapError) As(target interface{}) bool {
6069
for w != nil {
6170
if errors.As(w.new, target) {
@@ -68,6 +77,10 @@ func (w *wrapError) As(target interface{}) bool {
6877
return false
6978
}
7079

80+
// Unwrap 返回最后被包装的错误
81+
// 这并不是 errors 中的 Unwrap 接口实现,而且用来获取最后绑定的错误
82+
// 如果需要判断是否包含某个错误请使用 errors.Is
83+
// 如果判断是否包含的某种类型的错误,请使用 errors.As
7184
func (w *wrapError) Unwrap() error {
7285
if w == nil {
7386
return nil

errno/wrap.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,13 +166,17 @@ func (w *wrap) Unwrap() error {
166166
return w.err
167167
}
168168

169+
// Is 这是 errors.Is 接口实现,可以通过 errors.Is 函数判断 WrapErrno 是否包含某个具体的错误
170+
// 更详细的细节请浏览 errors.Is 文档
169171
func (w *wrap) Is(target error) bool {
170172
if w == nil {
171173
return false
172174
}
173175
return w.err.Is(target)
174176
}
175177

178+
// As 这是 errors.As 接口实现,可以通过 errors.As 函数判断 WrapErrno 是否包含某个类型的错误,并把发现的第一个错误赋值给 target
179+
// 更详细的细节请浏览 errors.As 文档
176180
func (w *wrap) As(target interface{}) bool {
177181
if w == nil {
178182
return false

0 commit comments

Comments
 (0)