Golangでスタックトレースを出力できるpkg/errorsについて




どうも高妻です。Twitterでプログラミングのことや暗号通貨のことをつぶやいているのでよかったらフォローしてください。  

Golangのスタックトレース

Golangではエラーのスタックトレースを出力してくれません。多くの言語で出力されるのにGolangにないなんてと思いました。。。C言語作者が作っているからですかね?

スタックトレースがないとエラー時のデバッグが無理なので探してみました。

pkg/errors

このパッケージは標準パッケージのerrorをラップして簡単に使うことができます。独自のエラー情報も追加できるし、ラップすることで簡単にスタックトレースを出力できます。

https://github.com/pkg/errors

標準パッケージ

まずは標準パッケージのエラー出力についてです。main.goに下記を実装します。

この場合のエラーは一行のみ出力されます。

errors.New()

次にpkg/errorsのスタックトレース出力です。errors.New()は同じ関数があるのでimportするものだけ変更すれば完了です。

pkg/errorsを使うとこの様になります。

一目瞭然でスタックトレース付きの方がわかりやすいですね。

erros.WithStack()

他にも外部パッケージからのエラーに対してもsタックトレースを追加することができます。

この場合も同様にスタックトレースを表示できます。

おすすめ書籍

Go言語の初心者から上級者までしっかり学べる書籍となっています。

本書籍はサンプルコードが非常に豊富で、HTTP/Websockert通信、CLIツール、Google/Twitter API、MongoDB等を使った様々なアプリケーションの作り方を学べます。

Go言語特有のgorutine、channelに関してもしっかりと説明されているのでこの書籍を一通り写経するとGoの全体像がつかめるかと思います。もちろん自分は全て写経しました。

The following two tabs change content below.

高妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です