タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

Goと例外に関するakatakunのブックマーク (2)

  • Goにおけるエラーのコンテキストとエラーハンドリング - shiimaxx's blog

    このエントリは Gopher道場 Advent Calendar 2018 5日目の記事です。 Goではエラーをerror型の値として扱います。errorはビルトインのインタフェース型として次のように定義されています。 type error interface { Error() string } https://golang.org/pkg/builtin/#error Goではインタフェース宣言時に定義したメソッドリストを実装することでインタフェースを実装します。 つまり、任意の型にError() stringをメソッドとして実装すれば、独自のエラー型のerrorとして扱うことが可能になります。 標準パッケージ net のエラー型 例えば標準パッケージのnetでは、OpError, DNSErrorなどの様々な独自のエラー型が定義されています。 これらのエラー型は、エラー情報を格納する

    Goにおけるエラーのコンテキストとエラーハンドリング - shiimaxx's blog
    akatakun
    akatakun 2020/06/09
    errorインタフェースの他にnet.Error Interfaceを実装しており、エラーの性質を判別するためのTimeout() bool, Temporary() boolなどのメソッドが定義されている
  • panicはともかくrecoverに使いどころはほとんどない - Qiita

    Goを書いていてrecoverを使うことはまずほとんどない。頻繁にrecoverを書いているとしたらなにかが間違っているのでプログラミングスタイルを見直すこと。 Goでのエラーハンドリング Effective Goなどで説明されているように、Goではエラーは関数の返り値として返される。たとえばio.ReaderのRead関数は、読み込んだバイト数と、(nilかもしれない)エラーの2つの値を返す。Goでは基的に、エラーは常にこういう通常の値としてハンドルするべきで、エラーの時のための特別な制御構造(try 〜 catch)のようなものを使うのは、利点より害のほうが多いという考え方をとっている。 (同じような考えで例外を使用禁止にしている大規模C++プログラムはいくつもある。たとえばChromiumなどはそうだ。LLVM/Clangもパフォーマンス上の問題で例外を使っていない。C++コンパイ

    panicはともかくrecoverに使いどころはほとんどない - Qiita
  • 1