Golang Day6


Error Handler

  • Defer
  • Panic
  • Recover

Defer

  • 會將該函式加入排程,當最後一個函式執行完畢時,會呼叫被宣告 defer 的函式
  • 通常用於需要以某種方式釋放資源時,比如開啟檔案之後要確保會關閉檔案



package main

import(
  "fmt"
)

func first(){
  fmt.Println("this is first")
}

func second(){
  fmt.Println("this is second")
}

func third(){
  fmt.Println("this is third")
}

func main(){
    defer second()
    first()
    third()

    /*
    f,_:=os.Open(filename)
    defer f.Close()
    */
}


Panic & Recover

  • panic 會產生 run-time error
  • recover 會停止 panic 並回傳在 panic 中所帶入的參數
  • 通常 defer、panic、recover 會搭配一起使用


package main

import(
  "fmt"
)

func main(){

   /* 此範例中,recover 並不會被執行,因為當執行 panic 時,已終止 main 執行
   panic("execute error")
   str:=recover()
   fmt.Println(str)
   */

   //搭配 defer 使用
   defer func(){
      str:=recover()
      fmt.Println(str)
   }()
   panic("execute error")
}


Q:

  1. _ 的作用為何 ? 該如何使用 ?

  • Share:

You Might Also Like

0 意見