區塊鏈技術語言(二十六):Go語言字典
任何程式語言的學習都要考慮錯誤處理。早期的語言,比如C語言中的errno,不是語言規範的一部分,通常只作為一種程式設計正規化存在。但C++語言從語言層面上增加錯誤處理的支援,比如異常的概念和try-catch關鍵字的引入。而Go語言最大的亮點之一就是擁有漂亮的錯誤處理規範。
1
error
error是Go語言內建的介面型別,它是錯誤處理的標準模式,定義如下:
在Go語言中,生成err值的方法有三種方式:通過errors包的New函式獲得error型別的值,採用fmt.Errof 將string資訊轉化為error型別的資訊,通過自定義實現一個error型別的值。
1.1 通過errors包的New函式獲得error 型別的值
建立自定義錯誤最簡單的方法是使用errors包中的New函式。標準庫中的errors包的資訊如下:
示例程式碼:
1.2 呼叫fmt包中的Errorf函式
另一個可以生成error型別值的方法是呼叫fmt包中的Errorf函式:
示例程式碼:
2
panic
如果程式出現普通錯誤,程式會返回一個error型別的值。但是當出現運算時把零作為除數、陣列訪問越界、引用空指標等操作都會引發程式出現崩潰性錯誤,必須呼叫panic,此時程式會中斷執行,並輸出日誌資訊。日誌資訊包括panic value和函式呼叫的堆疊跟蹤資訊。
引發panic異常的不僅包括上面所說的引發程式出現崩潰性錯誤的操作,也包括直接呼叫內建函式——panic函式。
2.1 由引發程式致命性操作導致程式出現 panic異常
運算時把零作為除數、陣列訪問越界、引用空指標等操作都會引發程式出現崩潰性錯誤,引發panic異常。
2.2 呼叫panic函式引發panic異常
Go語言提供了內建函式——panic函式,直接呼叫該內建函式也會引發panic異常,panic函式格式如下:
注:panic函式形參是空介面,能接受任何值作為引數。
3
recover
3.1 recover函式在程式出現panic錯誤 時的應用
如果程式出現的panic異常一旦被引發就會導致程式崩潰,為了讓程式從執行時的panic狀態中恢復,Go語言提供了內建的recover函式——“攔截”執行時的panic。它使當前的程式從執行時的panic狀態中恢復並重新獲得流程控制權。panic函式格式如下:
注:recover只有在defer呼叫的匿名函式中才有效。
3.2 recover函式在程式出現多個panic
錯誤時的應用
a. 當主程式有多個panic,第一個panic發生時,recover函式讓程式從執行時的panic狀態中恢復,獲得流程控制權,之後main程式結束。
b. 當延遲呼叫語句中有panic,捕獲程式最後一個錯誤,也就是defer語句最先出現panic的語句。當程式遇到第一個panic,程式會呼叫defer語句,直到defer語句最先出現panic的語句,此時recover函式讓程式從執行時的panic狀態中恢復,獲得流程控制權,之後main程式結束。
ofollow,noindex"> 原文連結:區塊鏈技術語言(二十六):Go語言字典
參考資料
[1] https://studygolang.com/articles/12784
[2] https://studygolang.com/articles/12785
本文完,獲取更多資訊,敬請關注區塊鏈工程師。
來源:鏈塊學院
本文由布洛克專欄作者釋出,代表作者觀點,版權歸作者所有,不代表布洛克科技觀點
——TheEnd——
關注“布洛克科技”