以下の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 件のコメント:
コメントを投稿