上級 › recoverは同じgoroutine内のpanicしか捕まえない › パターン4
recoverは同じgoroutine内のpanicしか捕まえない
recoverはそれを呼び出したgoroutine内で発生したpanicしか回復できません。
1 package main 2 3 import ( 4 "fmt" 5 "time" 6 ) 7 8 func process() { 9 panic("crash") 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: crash
空欄を埋めて実行を通す
安全にしたいなら、goroutineの中自身にdeferとrecoverのペアを用意する必要があります。
次の問題