昨天介紹了月光刑警還有他的助手美茄子刑警.
其實是利用defer 跟 recover()啦!
今天來看看在Golang中,怎樣處理除以零.
這是很有名的錯誤.
讓我們來看看在Golang中怎樣優雅的處理.
// hello52
package main
import (
"fmt"
)
func 出包() {
a := 5678
b := 0
n := a / b // 這裡會出包
fmt.Println(n) // 這根本沒機會執行
}
func 測試() {
// 先把救兵安排好
defer func() {
if e := recover(); e != nil {
fmt.Println("月亮的使者‧月光刑警!還有助手美茄子刑警,一同登場!")
fmt.Printf("出包情況是: %s\n", e)
}
}()
// 呼叫會出包的
出包()
fmt.Println("出包的函式若能正常執行不出包,你就會看到我了!")
}
func main() {
fmt.Println("主函式開始")
測試()
fmt.Println("主函式結束")
}
執行結果:
./hello52
主函式開始
月亮的使者‧月光刑警!還有助手美茄子刑警,一同登場!
出包情況是: runtime error: integer divide by zero
主函式結束