上級 › recoverは同じgoroutine内のpanicしか捕まえない › パターン2
recoverは同じgoroutine内のpanicしか捕まえない
recoverはそれを呼び出したgoroutine内で発生したpanicしか回復できません。
1 package main 2 3 import ( 4 "fmt" 5 "time" 6 ) 7 8 func task() { 9 panic("fail") 10 } 11 12 func main() { 13 defer func() { 14 if r := recover(); r != nil { 15 fmt.Println("recovered:", r) 16 } 17 }() 18 ______________________ ^ 19 time.Sleep(100 * time.Millisecond) 20 }
panic: fail
空欄を埋めて実行を通す
goで起動したgoroutine内のpanicは、そのgoroutine自身がrecoverしない限り、プロセス全体をクラッシュさせます。
次の問題