# simple recover running panic... recovering... recovered: panic # recover with result running panic... recovered: panic result: 3 # nested defer frame deferred nested function recovered: panic # nested panic: panic inside recover recovered 1: panic recovered 2: foo # panic inside defer recovered: panic # panic replace panic 1 panic 2 recovered: panic 2 # defer panic defer panic recovered from deferred call: deferred panic # indirect recover indirect recover returned: indirect panic # runtime.Goexit Goexit deferred function, recover is nil: true Goexit recovered deferred panic: panic during Goexit Goexit nested recovered deferred panic: nested panic during Goexit Goexit loop recovered deferred panic: loop panic during Goexit Goexit loop defer Goexit loop defer # repanic inner, repanicking outer recovered: repanic value # recover runtime errors recovered: index recovered: index from helper recovered: slice recovered: type assert recovered: empty interface type assert # recover from nil map and closed channel recovered: nil map recovered: closed chan recovered: close nil chan # recover from hardware signals recovered: divide by zero recovered: nil pointer dereference