【Golang】独自エラーを実装するメリット

0

2022年04月10日 16:40

こんにちは

Goでエラーハンドリングを実装するにあたり独自エラーの導入を検討しました。独自エラーについては色々な考え方や実装方法が載っていたので、改めて自分なりに独自エラーのメリットを整理しました。

独自エラーを実装するメリット

ざっくりいうと運用しやすくなることだと思いました。具体的にどこで運用のしやすさの恩恵を受けているかを書いていこうと思います!

ちなみに今回はこのような独自エラーコードを実装しました。
img

img

エラー箇所の特定をしやすく、フロントでも利用しやすくできる

少しレスポンスの出し方に加工が必要ですが、このようなイメージで返却することができます。下記はエラーをスタックしてエラーコードとエンドユーザー向けのエラーメッセージを返却しています。フロントではこのレスポンスを受け取ってそのままユーザーフレンドリーなエラーメッセージをそのまま出力したり、エラーコードによって条件分岐もしやすくなります。
(ginのwebフレームワークを使って出力しています)
img
レスポンス
img

独自エラーなしの場合

これがただエラーメッセージをWrapしただけだとこんな感じになります。
img
レスポンス
img
メッセージも長く、フロントでの利用も難しくなります。コード管理することやユーザーフレンドリーな形で独自エラーを定義する重要性がわかります。

テストしやすくなる

独自エラーを定義することで、エラーパターンのテストがシンプルになります。下記はBookを作成する関数のテストです。独自エラーをエラーパターンのexpectedに設定することで、expectedをassert.Equalのみで比較することができます。
img

独自エラーなしの場合

img
独自エラーがない場合、assert.Equalでerror比較ができないのでassert.EqualErrorでエラーメッセージを比較する必要があります。その分検証ポイントも1つ増えてしまうのでテストの可読性が低くなってしまいます。

独自エラーを導入することによるメリットを書いてみました。独自エラーを導入したいがメリットがあまりわからないと思った方の参考になれば幸いです。

# Go
# Firestore
0

診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。

目次を見る