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タックトレースを追加することができます。

この場合も同様にスタックトレースを表示できます。
The following two tabs change content below.

高妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 現在はTwitterなどSNSのテキスト解析を行うソーシャルメディア分析のサーバーサイドを開発中。言語はNode.js、Kotlinを使用。






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



コメントを残す

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