タグ

exceptionに関するringo6119のブックマーク (5)

  • エラーの種類と例外

    フォルトはシステム側で発生する異常であり、アプリケーションプログラムでキャッチしても適切なリカバリ処理を行うことができません。 Errorはまさにこのために存在する例外です。 メソッドのthrows節で宣言する必要はなく、アプリケーションプログラムでキャッチすることも想定されていません。 フェイラーはアプリケーションの設計の範囲内のエラーであり、当然アプリケーションプログラム側でリカバリ処理を行える可能性があるものです。 メソッドのインタフェースはクライアントとサプライヤの間の契約であるので、発生が予想されるエラーに関してthrows節で宣言することは当然と言えるでしょう。 throws節で宣言された(RuntimeExceptionでない)Exceptionはクライアントでキャッチすることが必要になります。 デフェクトはアプリケーションのバグに起因するエラーであり、アプリケーションプログ

  • Eitherによるエラー処理 - エラー処理による分岐を減らす | Scala Cookbook

    エラー処理によるコードの分岐を減らしたい場合、Eitherを使うとよい。 Eitherの使い方 Either[A, B] は、AまたはBを返す型である。 Eitherは通常Either[(エラー情報), (結果)]の形で使われる。例えばデータ処理が成功した場合はその結果を用いて引き続きの処理を行いたいが、エラーの場合は何もせず次のコードにエラーだけを伝えたい場合がある。 Eitherから値を取り出すには、left, rightの値に対してmap, flatMapなどを用いる。例えば、Either.right map { ... }とすると、値の内容がRight型の場合はmap内の関数を適用し、Leftの型の場合はmapの処理を無視してLeftの内容(この場合はエラー情報を)をそのまま返す。 具体例 # 文字列がIntに変換できるならIntを、失敗した場合はExceptionを返す関数 sc

  • Throwableについて本気出して考えてみた - 都元ダイスケ IT-PRESS

    Throwable、Exception、RuntimeException(RTE)、Errorあたりを整理しながら、色々考えてみた。私見に基づくので、間違っているかもしれないけれど、自分としては頭が整理できたかな、と感じたので晒してみる。異論があったらコメントください。 まず、一番基礎的なところで、継承関係の整理から。こんなツリーになっています。 Throwable Error Exception RuntimeException そして、稿での用語の定義。caller=呼出す側のコード callee=呼出される側(throwする側)のコードとします。 Throwable Throwableは「throw文に指定できる何か」という意味ですね。 Instances of two subclasses, Error and Exception, are conventionally used

    Throwableについて本気出して考えてみた - 都元ダイスケ IT-PRESS
  • Scalaでの例外とEither

    しいたけ @yuroyoro @cooldaemon 俺の中ではEitherはJavaのチェック例外と同じ感覚で、利用側にExceptionの処理を適切に行わせたい場合に採用するものだと思ってます #scala 2011-05-11 14:21:47 🐶pomu0325 @pomu0325 @cooldaemon 検査例外的に異常の場合にLeftである型を返すのを明示したい場合にEither使ってます。Exceptionのサブクラス作らなくても好きな型を突っ込めるので場合によってはExceptionより短くかける時もありますね。 2011-05-11 14:23:04 Masahito IKUTA @cooldaemon @yuroyoro なるほどー。追加で恐縮ですが、多分、allCatch だと非チェック例外も捕まえてしましますよね。connect の中で、allCatch している

    Scalaでの例外とEither
  • Scalaでの例外処理 - Either,Option,util.control.Exception - ( ꒪⌓꒪) ゆるよろ日記

    今日はScalaの例外処理について解説しますよ。 基 - try,catch,finally 例外処理の基は、try,catch,finallyです。これはJavaと同じですね。 ただし、Scalaでのtry,catch,finallyは値を生成します。つまり、実行されたブロックの値が評価されます。 scala> val n = try{ "99".toInt } catch { case e:Exception => -99 } n: Int = 99 scala> val n = try{ "foo".toInt } catch { case e:Exception => -99 } n: Int = -99 上記のように、catch節には "case e:Exception => ..."のようなパターンマッチを書くことで、対応する例外の型に応じて補足することができます。try,

    Scalaでの例外処理 - Either,Option,util.control.Exception - ( ꒪⌓꒪) ゆるよろ日記
  • 1