File tree Expand file tree Collapse file tree 1 file changed +26
-1
lines changed
Expand file tree Collapse file tree 1 file changed +26
-1
lines changed Original file line number Diff line number Diff line change @@ -12,12 +12,37 @@ Go语言设计的时候主要的特点是:简洁、明白,简洁是指语法
1212
1313其实这样的error返回在Go语言的很多内置包里面有很多,我们这个小节将详细的介绍这些error是怎么设计的,以及在我们设计的Web应用如何更好的处理error。
1414## Error类型
15- error类型是一个接口类型,这是他的定义 :
15+ error类型是一个接口类型,这是它的定义 :
1616
1717 type error interface {
1818 Error() string
1919 }
2020
21+ error是一个内置的类型变量,我们可以在/builtin/包下面找到相应的定义。而我们在很多内部包里面用到的 error是errors包下面的实现的非导出结构errorString
22+
23+ // errorString is a trivial implementation of error.
24+ type errorString struct {
25+ s string
26+ }
27+
28+ func (e *errorString) Error() string {
29+ return e.s
30+ }
31+ 你可以通过` errors.New ` 把一个字符串转化为errorString,然后返回error接口,其内部实现如下:
32+
33+ // New returns an error that formats as the given text.
34+ func New(text string) error {
35+ return &errorString{text}
36+ }
37+
38+ 下面这个例子演示了如何使用` errors.New ` :
39+
40+ func Sqrt(f float64) (float64, error) {
41+ if f < 0 {
42+ return 0, errors.New("math: square root of negative number")
43+ }
44+ // implementation
45+ }
2146
2247## 自定义Error
2348
You can’t perform that action at this time.
0 commit comments