以下のphpのtry-catchの書き方、ウェブエンジニアなら、恐らく何度でも目にしたことがあると思います。
<?php
function hoge() {
try {
throw new Exception("throw error\n");
}catch(Exception $e) {
echo $e->getMessage();
echo "will do something to rollback";
}
}
hoge();
?>
|
Golangなら、相等な書き方はないでしょうか?
答えは、あります。サンプルは下記の通りです。
import (
"fmt"
)
func hoge() {
defer func() {
if err := recover(); err != nil {
fmt.Println("catch the error.", err)
fmt.Println("will do something to rollback")
}
}()
panic("throw exception")
}
func main() {
hoge()
}
簡単に説明します。
異常が発生しそうなソースコードの前に、「recover」を使って、異常を捕捉(catch)することができます。
特にDBの何かエラーが発生しそうで、rollbackをしないといけないときに、とておも役に立つと思います。
使い方は以下のように↓
defer func() {
if err := recover(); err != nil {
}
}
}
0 件のコメント:
コメントを投稿