いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-587 (Go言語におけるエラーハンドリングの冗長性についてのGoチームの回答)([ On | No ] syntactic support for error handling)

関連記事

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

以下、自分用のメモです。

Go本家ブログにて以下の記事がポストされました。

go.dev

要約すると、Goにて長年議論されているエラーの扱い方である

if err != nil {
    ...
}

というハンドリング方法について、Goチームからの回答がポストされたという記事ですね。

結論として以下のようになっています。

For the foreseeable future, the Go team will stop pursuing syntactic language changes for error handling. We will also close all open and incoming proposals that concern themselves primarily with the syntax of error handling, without further investigation.

当面の間、Go チームはエラー処理に関する言語構文の変更を中止します。また、エラー処理の構文に主眼を置く、現在進行中および新規の提案はすべて、さらなる調査を行わずにクローズします。

この方針に至るまで、本当に長い間議論が交わされてきましたが、どれも妥当なコンセンサスを得ることが出来なかったとのこと。

なので、今後もGoのエラーハンドリングは今まで通りのやり方が正当な方法となると言うことですね。

色々な意見があると思いますが、個人的な意見でいうと私自身はこの決定に「賛同」です。私自身、実務では業務アプリケーションを開発してお客様にご納品する仕事形態のエンジニアであるのもあるかもしれませんが、エラー処理というのは「省略」するものでも、「楽」するものでも無いという立ち位置です。何らかの呼び出しを行った結果、エラーが発生した場合は「その場所」で捉えて処置し、必要であれば情報を付与して上位に連携するという認識。なので、Goのこのエラーハンドリングスタイルは、そもそも変だとか面倒だとか感じていませんし、古臭いとも感じていません。

個人的にはちょっとホッとしたというのが正直な感想。このエラーハンドリングについての思想はGoらしい部分と思いますので、変わってほしくないですね。シンプルなままが良い。

参考情報

go.googlesource.com

github.com

seankhliao.com

Goのおすすめ書籍


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。