2
Iは、ライブラリパニックからrecover()
Sを使用し、それは次のように簡略化コードを使用した:関数ブレークを呼び出すのはrecover()ですか?
func main() {
defer rec()
panic("X")
}
func rec() {
rec2()
}
func rec2() {
fmt.Printf("recovered: %v\n", recover())
}
本の出力は、次のとおり代わり
recovered: <nil>
panic: X
... more panic output ...
なお、recover()
戻るnil
エラーのこれは意図された動作ですか?
遅延機能から(recがメインで遅延された)recover()は呼び出されませんでしたか?私はあなたを信じている、私はちょうどかなり理解していない:) –
@ william.taylor.09:いいえ、ここでの遅延関数は 'rec'であり、' rec'は* rec *を直接呼び出します。 'rec2'は' recover() 'を呼び出すものです。遅延を 'rec2()'に変更すると、パニックをキャッチします。 – JimB
ああ、私は確かに誤読。ありがとう! –