GO語言標準錯誤處理機制error用法執行個體_Golang

來源:互聯網
上載者:User

本文執行個體講述了GO語言標準錯誤處理機制error用法。分享給大家供大家參考。具體分析如下:

在 Golang 中,錯誤處理機制一般是函數返回時使用的,是對外的介面,而異常處理機制 panic-recover 一般用在函數內部。

error 類型介紹

error 類型實際上是抽象了 Error() 方法的 error 介面,Golang 使用該介面進行標準的錯誤處理。

複製代碼 代碼如下:
type error interface {
 Error() string
}

一般情況下,如果函數需要返回錯誤,就將 error 作為多個傳回值中的最後一個(但這並非是強制要求)。參考模型:
複製代碼 代碼如下:
func Foo(param int) (n int, err error) {
 // ...
}

if n, err := Foo(0); err != nil {
        // 錯誤處理
}


這就是 error 的使用方法,與其他語言的異常相比,Golang 的方法相對更加容易、直觀。

代碼1:經典使用方法

複製代碼 代碼如下:
package main

import (
 "errors"
 "fmt"
)

func requireDual(n int) (int, error) {
 if n&1 == 1 {
  return -1, errors.New("您輸入不是雙數") //產生一個簡單的 error 類型
 }

 return n, nil
}

func main() {
 if result, err := requireDual(101); err != nil {
  fmt.Println("錯誤:", err)
 } else {
  fmt.Println("結果:", result)
 }
}


輸出結果:

錯誤: 您輸入不是雙數

你有沒有覺得 Golang 的這種錯誤的處理機制非常的簡潔啊,呵呵!

代碼2:擴充下上面的代碼,帶自訂參數的錯誤輸出

複製代碼 代碼如下:
package main

import (
 "fmt"
)

type dualError struct {
 Num     int
 problem string
}

func (e dualError) Error() string {
 return fmt.Sprintf("參數不正確,因為\"%d\"不是雙數", e.Num)
}

func requireDual(n int) (int, error) {
 if n&1 == 1 {
  return -1, dualError{Num: n}
 }

 return n, nil
}

func main() {
 if result, err := requireDual(101); err != nil {
  fmt.Println("錯誤:", err)
 } else {
  fmt.Println("結果:", result)
 }
}


輸出結果

錯誤: 參數不正確,因為"101"不是雙數

希望本文所述對大家的GO語言程式設計有所協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.