上級 › recoverは同じgoroutine内のpanicしか捕まえない › パターン5
recoverは同じgoroutine内のpanicしか捕まえない
recoverはそれを呼び出したgoroutine内で発生したpanicしか回復できません。
1 package main 2 3 import ( 4 "fmt" 5 "time" 6 ) 7 8 func handle() { 9 panic("oops") 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: oops
空欄を埋めて実行を通す
panicとrecoverの対応はgoroutineごとに独立しているため、goroutineをまたいだ回復はできません。
次の問題