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を用いたエラーハンドリングを心がけるべきです。