回到简体

This commit is contained in:
chai2010
2016-02-15 11:06:34 +08:00
parent 9e878f9944
commit 2b37b23285
177 changed files with 2354 additions and 2354 deletions

View File

@@ -1,6 +1,6 @@
## 7.8. error接口
從本書的開始,我就已經創建和使用過神祕的預定義error型,而且有解它究竟是什麽。實際上它就是interface型,這個類型有一個返迴錯誤信息的一方法:
从本书的开始,我就已经创建和使用过神秘的预定义error型,而且有解它究竟是什么。实际上它就是interface型,这个类型有一个返回错误信息的一方法:
```go
type error interface {
@@ -8,7 +8,7 @@ type error interface {
}
```
建一error最簡單的方法就是調用errors.New函,它會根據傳入的錯誤信息返迴一個新的error。整errors包僅隻有4行
建一error最简单的方法就是用errors.New函,它会根据传入的错误信息返回一个新的error。整errors包仅只有4行
```go
package errors
@@ -20,13 +20,13 @@ type errorString struct { text string }
func (e *errorString) Error() string { return e.text }
```
errorString的型是一個結構體而非一字符串,這是爲了保它表示的錯誤避免粗心(或有意)的更新。且因是指針類型*errorString滿足error接口而非errorString型,所以每New函數的調用都分配了一個獨特的和其他錯誤不相同的例。我也不想要重要的error例如io.EOF和一個剛好有相同錯誤消息的error比較後相等。
errorString的型是一个结构体而非一字符串,这是为了保它表示的错误避免粗心(或有意)的更新。且因是指针类型*errorString足error接口而非errorString型,所以每New函数的调用都分配了一个独特的和其他错误不相同的例。我也不想要重要的error例如io.EOF和一个刚好有相同错误消息的error比较后相等。
```go
fmt.Println(errors.New("EOF") == errors.New("EOF")) // "false"
```
調用errors.New函是非常稀少的,因有一方便的封裝函數fmt.Errorf還會處理字符串格式化。我曾多次在第5章中用到它。
用errors.New函是非常稀少的,因有一方便的封装函数fmt.Errorf还会处理字符串格式化。我曾多次在第5章中用到它。
```go
package fmt
@@ -38,7 +38,7 @@ func Errorf(format string, args ...interface{}) error {
}
```
然*errorString可能是最簡單的錯誤類型,但遠非隻有它一。例如syscall包提供了Go言底層繫統調用API。在多平台上,它定義一個實現error接口的數字類型Errno且在Unix平台上Errno的Error方法會從一個字符串表中査找錯誤消息,如下面展示的這樣
然*errorString可能是最简单的错误类型,但远非只有它一。例如syscall包提供了Go言底层系统调用API。在多平台上,它定义一个实现error接口的数字类型Errno且在Unix平台上Errno的Error方法会从一个字符串表中查找错误消息,如下面展示的这样
```go
package syscall
@@ -60,7 +60,7 @@ func (e Errno) Error() string {
}
```
下面的語句創建了一持有Errno值2的接口值表示POSIX ENOENT狀況
下面的语句创建了一持有Errno值2的接口值表示POSIX ENOENT状况
```go
var err error = syscall.Errno(2)
@@ -68,8 +68,8 @@ fmt.Println(err.Error()) // "no such file or directory"
fmt.Println(err) // "no such file or directory"
```
err的值形化的呈現在圖7.6中。
err的值形化的呈现在图7.6中。
![](../images/ch7-06.png)
Errno是一個繫統調用錯誤的高效表示方式,它通過一個有限的集合行描述,且它滿足標準的錯誤接口。我們會在第7.11了解到其它滿足這個接口的型。
Errno是一个系统调用错误的高效表示方式,它通过一个有限的集合行描述,且它满足标准的错误接口。我们会在第7.11了解到其它满足这个接口的型。