はじめに
2019年5月18日に東京で開催される Go Conference 2019 Spring に参加してきました.
https://gocon.jp/
気になった Session に関して,ゆるゆるメモったので,本記事でまとめたいと思います.
間違っている箇所があれば優しくご指摘下さい.
エラー設計について/Designing Errors
Go におけるエラーハンドリングのベストプラクティス紹介
Speaker: morikuni さん
Twitter: inukirom
エラーについて
エラーには 既知のエラー と 未知のエラー が存在する
未知のエラーを既知のエラーにするのが エラーハンドリング
エラーに求められること
エラーに求められるのは 関係者に処理が失敗した原因を伝える こと
関係者によってエラーに求める情報は異なるので, 関係者ごとに適切な情報を渡そう
- アプリケーション:エラーの識別情報
- エンドユーザ:人間が理解可能なメッセージ
- 運用者:コールスタックやコンテキスト
Go でエラーを扱うベストプラクティス
- アプリケーション固有のエラーコードを定義しよう
- 既知の外部のエラーは定義したエラーコードに変換しよう
- 定義したエラーコードのみを想定してエラーハンドリングをしよう
- エンドユーザがエラーを解決できる場合はメッセージを追加しよう
- 必要に応じてコールスタックや引数の情報を追加しよう
- 未知のエラーが見つかったらハンドリングして既知にしよう
failure について
上記のエラーハンドリングを適切に行うために failure というものを作ったよ
failure を使ったエラーハンドリング方法紹介
failure と xerrors の違い
failure はエラーを 拡張 するイメージ
xerrors はエラーを 変換 していくイメージ
どちらを使うとよいか
- アプリケーション: failure
- ライブラリ: xerrors
まとめ
Go Conference 2019 Spring に参加して気になった Session についてまとめました.
まだまだ Go Conference は開催中なので,引き続き気になる Session があれば記事化していきたいと思います.
Qiita には私が聞いた内容をまとめていますが,
会社のブログには,同僚が書いた記事も載っているのでそちらも合わせてご覧下さい.
http://nekojarashi.hatenablog.jp/