この記事が秀逸 https://blog.golang.org/defer-panic-and-recover panic, recover, deferの挙動の詳細が書いてある。 後は別件で、goroutineの中でのpanicはhandle出来ない。もちろんそのgoroutine内でdeferしてrecoverすれば大丈夫