iT邦幫忙

DAY 5
0

蠻可愛的 Golang系列 第 5

月光刑警很忙

前面介紹了錯誤處理以及goroutine,
今天來看看,當goroutine裡面出狀況時,
golang是否能夠有效的處理錯誤情況.

package main

import (
	"fmt"
	"time"
)

func main() {
	fmt.Println("主函式啟動!")

	// 啟動一個 goroutine
	go 玉面飛鷹()

	// 啟動另一個 goroutune
	go 油達大師()

	fmt.Println("主函式睡眠中!")
	time.Sleep(time.Second * 12)
	fmt.Println("主函式結束!")
}

func 玉面飛鷹() {
	// 先把救兵安排好
	defer func() {
		if e := recover(); e != nil {
			fmt.Println("月亮的使者‧月光刑警!還有助手美茄子刑警,一同登場!")
			fmt.Printf("出包情況是: %s\n", e)
		}
	}()
	fmt.Println("大家好! 我是人見人愛,花見花開的玉面飛鷹!")
	fmt.Println("看我飛~~~~~ 噗~ 噗~噗~ 展翅飛翔~!")
	time.Sleep(time.Second * 5)
	panic("玉面飛鷹肚子餓,沒力!")
	fmt.Println("報告! 玉面飛鷹到達目的地!") // 玉面飛鷹實際上沒飛到
}

func 油達大師() {
	fmt.Println("師大達油是我! 好家大!")
	time.Sleep(time.Second * 1)
	fmt.Println("砍!!!")
	fmt.Println("工收完砍!")
}

執行結果:
./hello54 
主函式啟動!
主函式睡眠中!
大家好! 我是人見人愛,花見花開的玉面飛鷹!
看我飛~~~~~ 噗~ 噗~噗~ 展翅飛翔~!
師大達油是我! 好家大!
砍!!!
工收完砍!
月亮的使者‧月光刑警!還有助手美茄子刑警,一同登場!
出包情況是: 玉面飛鷹肚子餓,沒力!
主函式結束!

上一篇
玉面飛鷹決戰油達大師
下一篇
透過 channel 來通訊
系列文
蠻可愛的 Golang30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言