タグ

例外に関するakatakunのブックマーク (5)

  • 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
  • Rubyで自前の例外クラスを作るときExceptionではなくStandardErrorを継承する理由 - yarbの日記

    Rubyの例外について少し調べたので、まとめてみる。 多くのモダンな言語同様にRubyでは例外処理機構が組み込まれている。 ファイルを開こうと思ったらファイルが存在しなかった ネットワーク先のサーバが反応しなくてタイムアウトした 定義されていない(存在しない)メソッドを呼んだ 0で割り算をしてしまった など想定外の問題に遭遇したときに、その問題を無視せずプログラマが何らかの対応処理をするための枠組みを提供する。 C言語など古い言語では、関数からの戻り値でエラーコードを返し、それによって呼び出し側がエラー処理をその場で記述する。例えば、fopen(3)が失敗すると戻り値としてNULLが戻ってきてグローバル変数のerrnoに失敗の理由を示すエラーコードが設定される。 #include <stdio.h> #include <string.h> #include <errno.h> int ma

    Rubyで自前の例外クラスを作るときExceptionではなくStandardErrorを継承する理由 - yarbの日記
  • シグナルと trap コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス

    シグナルと trap コマンド シグナル シグナルとは? シグナルとは、実行中のプロセスに対して、さまざまなイベントを通知するために送出されるものである。 よく使用される、プロセスを終了するためのシグナルである SIGTERM や SIGKILL などのほかにも、数十種類のシグナルが存在する。 使用可能なシグナルの一覧は、コマンドラインから kill -l を実行することで参照可能である。 $ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19)

    シグナルと trap コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス
  • 例外、エラー、異常、そして - Qiita

    「例外」「エラー」「異常」あたりの言葉が、言語仕様や設計の中で人によって微妙にずれた使い方されてるから、 「Expected だが Accept されないケース」を表す別の言葉が欲しい。 — Jxck (@Jxck_) 2016年8月31日 @Jxck_ 来こう分類されて、 1. Expected/Accepted 2. Expected/UnAccepted 3. UnExpected 2, 3 をどう呼ぶかあたりで、例外, エラー, 異常などの言葉が入り乱れてて、それが広義の例外処理が誤解される原因だと思ってる — Jxck (@Jxck_) 2016年8月31日 Expected and Accepted Expected but Unaccepted Unexpected

    例外、エラー、異常、そして - Qiita
    akatakun
    akatakun 2016/09/01
    RubyではExpected but Unaccepted: StandardError,Unaccepted: Exception,だから独自例外はStandardErrorを継承するのがしきたりで、引数なしrescueがcatchするのがStandardErrorのサブクラスなのか・・なるほど
  • 1