技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

panicとrecover【Go】

panic()を用いて強制終了させることができます。

panic("error!")


また、recover()を用いて、実行したpanicを取り消すこともできます。
deferを使って、panicより先に宣言し、関数内の処理の最後に実行する必要があります。

defer func(){
    str := recover()    // panicの引数(string)を受け取る
    fmt.Println(str)    // error!
}()                                 // deferは関数の実行(()の記述)を指定する必要がある。
panic("error!")

こうすることで、panicは発動しませんが、
panicの引数に指定した文字列を操作することができます。

panicの引数も必要ないという場合には、単にrecover()とします。

defer func(){
    recover()    // panicを回避
}()
panic("error!")


ただし、panicは公式でも推奨されない方法です。
エラーの明確化ができないがために、最後の策として取り得る手段であるからです。
できるかぎり、ifを用いたエラーハンドリングを心がけるべきです。