タグ

例外処理に関するHHRのブックマーク (17)

  • Javaの検査例外は、呼び出し側で「どんなに注意しても防げない」異常系 - Qiita

    注:記事の内容はJavaで公式にドキュメントされているものではなく筆者の見解です。とはいえクラスを設計する上で有用な指針たり得ると思われるので公開したものです。 おさらい - 検査例外と非検査例外 Javaの例外クラスには「catchしないとコンパイルエラーになる」検査例外(チェック例外、checked exception)とそうでない非検査例外(非チェック例外、unchecked exception)があります。 検査例外は最近は嫌われる傾向がありC#では採用されていませんしAltJava言語も軒並み不採用、さらにはJavaの新しめのライブラリにも非検査例外しか投げないものが出てきていますが、適切に使えば安全なプログラミングのための強力な武器であり、検査例外の有意義さについては @irxground さんの Javaの検査例外の存在意義 をご覧ください。 例外クラスを自作する場合、検査

    Javaの検査例外は、呼び出し側で「どんなに注意しても防げない」異常系 - Qiita
    HHR
    HHR 2018/01/06
    チェック例外(checked exception)と非チェック例外(RuntimeExceptionとその子、unchecked exception)について
  • PHP7 で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計 / PHP Conference 2016

    2016/11/03 @ PHPカンファレンス2016 2016/12/15 @ PHPカンファレンス2016再演イベントにて改訂 2017/06/10 @ PHPカンファレンス福岡2017にて改訂 2017/06/10 @ PHPカンファレンス福岡2017講演録画 https://www.youtube.com/watch?v=54jHDHvcYAo

    PHP7 で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計 / PHP Conference 2016
  • 例外、エラー、異常、そして - 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
  • 例外入門以前 - Qiita

    例外 Advent Calendar 2014の継続について 参加者が集まらなかったという経緯から独りAdvent Calendarとして始めた「例外 Advent Calendar 2014」ですが、諸事情により継続が困難となったため私Kokudoriの6日以降の投稿はありません。変に注目だけを集める形になってしまい申し訳ありません。 以下、諸事情というか、言い訳。 『契約による設計から見た例外』という記事にて述べた「契約」に対する私の理解が根的に間違っていました。 そこから芋づる式に例外に関する私自身の考えが間違っていた、あるいは理解が浅かったことに気づきました。このような理解力では例外について私見を述べることさえ不可能となり、結果頓挫という形になりました。 考えうる限り最低で残念な結果になってしまいました。当に申し訳ございませんでした。 初めに原則を考え出して、それから例外を見つ

    例外入門以前 - Qiita
    HHR
    HHR 2014/12/08
    ちょっ。無くなっちゃった…
  • 例外のカレンダー | Advent Calendar 2014 - Qiita

    例外やエラー、それにまつわる各種言語の取り組み等を共有しましょう。 11月末までに書き手が集まらなかった場合は主催者による独りAdvent Calendarと化します。 集まらなかったので残念ながら独りAdvent Calendarと化しました。 追記 独りAdvent Calendarですが、以下の理由で頓挫しました。6日目以降はお好きにご活用ください。 http://qiita.com/Kokudori/items/3a953c00012408f76ab9#%E4%BE%8B%E5%A4%96-advent-calendar-2014%E3%81%AE%E7%B6%99%E7%B6%9A%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

    例外のカレンダー | Advent Calendar 2014 - Qiita
    HHR
    HHR 2014/12/02
    個人の見解です。→あれっ?消…えた…?
  • JavaScriptと非同期のエラー処理

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog Yahoo!デベロッパーネットワークの中野(@Hiraku)です。前回のコールバック地獄に関する記事では、複雑な入れ子になりやすい非同期処理でも、GeneratorやjQuery.Deferredを使うことで、同期的な見た目に変形できることを示しました。 ところで、非同期処理においてはもう一つ「 エラー処理に例外が使えない 」という問題があります。今回はエラー処理について考えてみたいと思います。 例外を使ったエラー処理 非同期処理の話の前に、一度「例外」についておさらいしておきましょう。JavaScriptに限らず、エラーと言えばよく例外を使って記述されます。 「Web APIから500が返ってきた」とか「入力された値が期待する型

    JavaScriptと非同期のエラー処理
  • Standard PHP Libraryの例外クラスを活用しよう!

    はじめに 今回はPHPでの例外の扱い方、特にSPL (Standard PHP Library)の例外クラスの使い方を見ていきます。例外を投げる際には、エラー種別により例外クラスを切り替え、受け取る側での処理も分けます。Javaなどではごく当たり前です。しかし、PHPプログラマの中には、そこまで切り分けない人も意外といます。Exceptionクラスだらけのコードもしばしば見かけます。 SPLの例外クラス アプリケーションによっては、例外クラスを独自に作成することもあります。とはいえ、いきなり例外クラスを複数定義して使いまわすことは、若干ハードルが高いかもしれません。まずは、SPL (Standard PHP Library)の例外クラスを使ってみましょう。SPLでは以下の例外クラスを提供しています。 SPL 例外クラスツリー LogicException (extends Exceptio

    HHR
    HHR 2013/02/07
    わかりやすい。いい感じ
  • PHP例外RuntimeException、LogicExceptionの使い分け : ソースコードと翻訳が大好き

    PHPには次の2種類の例外系が存在しますね。RuntimeExceptionLogicExceptionこれはどのように使い分けるべきなのかについて PHPのドキュメント(http://www.php.net/manual/)をベースに調べてみたので共有します。 まずは結論! RuntimeException系 : 運用で通常発生しうる例外。 発生してもバグとは限らない。通常の例外。 例) throw new RangeException("規定範囲外の値が入力されました");LogicException系 : バグ検出のために仕込む例外。 来、実運用時には発生しない。発生したらバグ。 例) throw new LogicException("引数で数値以外を渡さないでください!!"); java にも同名の例外がありますが、java の使い分け方とは全く異なるので java 使いには要

    PHP例外RuntimeException、LogicExceptionの使い分け : ソースコードと翻訳が大好き
  • 非同期APIと例外処理(node.js の domain について)

    node.js のような非同期APIを使ったプログラミングに拒絶反応を示すエンジニアが多い理由の一つが、非同期APIと例外処理の相性の悪さだ。 Javascript の場合、例外処理はこんな感じに記述する。 function f(i) { try { throw new Error('an error #'+ i); } catch(e) { console.log('Error caught:', e.message); } } ところが、これに非同期APIが絡むと、とたんに分かりにくくなる。例えば下の例。 function f(i) { try { setTimeout(function() { throw new Error('an error #'+ i); }, 1000); } catch(e) { console.log('Error caught:', e.message)

    HHR
    HHR 2012/10/22
    v0.8 domail
  • PHP の「エラー処理ハンドラ」「シャットダウンハンドラ」「例外処理ハンドラ」の挙動

    error_reporting 関数に上記の定数を渡すことで、どのレベルのエラーをレポートすべきか PHP に指示することができます。 全てのエラーをレポートするには、E_ALL を指定します。PHP4 と PHP5 では既定では E_ALL & ~E_NOTICE が指定されます。 エラーハンドラの指定 エラーハンドラは、set_error_handler 関数で指定します。 次の例では $i = 5/0; の行で 0 除算の警告が発生しますが、その箇所でユーザー定義の エラーハンドラである my_error_handler 関数が呼ばれます。 <?php set_error_handler( 'my_error_handler', E_ALL ); $i = 5/0; function my_error_handler ( $errno, $errstr, $errfile, $err

    PHP の「エラー処理ハンドラ」「シャットダウンハンドラ」「例外処理ハンドラ」の挙動
  • node.js Domain 時代のエラー処理のコーディングパターン - ぼちぼち日記

    id:kazuhooku さんの記事 node.js におけるエラー処理のコーディングパターン (もしくは非同期 JavaScript における例外処理。 ナイスです! なんと素晴らしいタイミングでのブログでしょうか! 「東京Node学園 5時限目」で id:koichik さんのプレゼンで node-v0.7.8 から isaacs 版 Domain が導入されるという発表がありましたが、予定通り昨日 Domain 機能付きの node-v0.7.8 がリリースされました。 しかもDomain のドキュメント付きです。 http://nodejs.org/docs/v0.7.8/api/domain.html ちょうど id:kazuhooku さんの記事の例は node.js の新機能 Domain を教科書通りに適応するとどうなるのか紹介するのにぴったりのお題なので Node.js

    node.js Domain 時代のエラー処理のコーディングパターン - ぼちぼち日記
    HHR
    HHR 2012/04/23
    require('domain');
  • node.js におけるエラー処理のコーディングパターン (もしくは非同期 JavaScript における例外処理) - kazuhoのメモ置き場

    node.js を代表とする JavaScript を用いた非同期プログラミング環境においては、コーディングパターンのベストプラクティスが共有されておらず、結果として品質の低いコードが多くなるという問題があるように思います。そこで、特にエラー処理をどう書くべきか、既存のライブラリを使う方法を紹介してみることにしました。 いきなりですが、ファイルの文字数を返す関数を作ることを考えてみます。Java だと以下のような感じになるでしょうか。countChars メソッドに注目すると、エラーを例外として扱っていて、モジュラーかつ簡潔になっていることがわかります。 class FileCounter { static long countChars(String filename) throws IOException { FileInputStream is = new FileInputStre

    node.js におけるエラー処理のコーディングパターン (もしくは非同期 JavaScript における例外処理) - kazuhoのメモ置き場
    HHR
    HHR 2012/04/23
  • シェルスクリプトを書く際に気を付けていること8箇条 - カイワレの大冒険 Third

    エンジニアという職業柄かシェルスクリプトを書くことはちょくちょくあるのですが、自分なりに気を付けていることを備忘録&自分への戒めも含めて、簡単に書いてみたいと思います。 変数は大文字 シェルスクリプト書いていれば変数の出番は至るところであるでしょう。その際、可読性を増すように、変数は大文字を使っています。 RET=`cmd1`みたいに。好みの問題もあるでしょうが、分かりやすいので。 クオテーションは選ぶ クオテーションにはシングルだったり、ダブルだったり色々ありますが、使い分けておいたほうがよいでしょう。 変数の展開がないようであれば、シングルクオーテーションのほうがスマートでしょうし、展開があるのならダブルクオーテーションを使えばと。 ダブルクオーテーションを使うのにも意味があって、変数は「$RET」のようにクオテーションで囲まなくても動作はたいていするのですが、 echo "${RET

    シェルスクリプトを書く際に気を付けていること8箇条 - カイワレの大冒険 Third
  • PHP5再入門「例外処理の正しい利用について」 - yandod's blog

    第28回PHP勉強会で表題の通りの発表をしてきました。 業務でPHP5を使う前に調査した内容を元に会場の方とやり取りをしながら進めていきました。 かなり時間をオーバーしてしまいましたが、色々な方から有益な指摘が頂けてよかったと思います。 なぜか株式会社ノッキングオンが会場の勉強会は体調が悪い事が多いんですが、なんとか持ち直しました。 PHP5再入門「例外処理の正しい利用について」発表資料をアップしました 以下、覚えている範囲での頂いた指摘です。 エラー処理の利用暦 trigger_errorの使用経験者は3割ほど PEAR_Errorの使用経験者は半分以上 Exceptionの利用範囲に関して フレームワークの提供する例外クラスを使う Exceptionの派生クラスは作らない Exceptionはあくまで復帰できないようなエラーに限るべき トップレベルのExceptionはcatchしては

    PHP5再入門「例外処理の正しい利用について」 - yandod's blog
    HHR
    HHR 2011/12/01
    スライド付き。いい感じ
  • 「@」でエラー抑制すると PHP が遅くなるという噂について : a My RSS 管理人ブログ

    PHP では @ を付けることでエラーを回避できるという便利な記述方法があり、ものぐさな私などは if (@$var["foo"]) $result = $var["foo"]; みたいなコードを書いてしまいます。 で、この処理が「遅い」という噂やツッコミを度々受けるので調べてみました。 「ほら、そんな気にするほどでも無いよ」という結果を期待していたのですが、、、なんじゃこりゃ。。。 劇遅じゃないですか、これ。 いやはや・・・ ちょっと列挙しますね。以下のようなコードを単純 for 文で 100万回実行したときの結果です。 error_reporting(0) で PHP4 if (@$a["hoge"]) $b = $a["hoge"]; ⇒ 約 2.4 秒 if ($a["hoge"]) $b = $a["hoge"]; ⇒ 約 1.3 秒 if (isset($a["hoge"]))

    HHR
    HHR 2009/01/28
    実際遅いw
  • PHPの@によるエラー抑制機能の遅さ - Blog::koyhoge::Tech

    PHPで@によるエラー抑制は実行が遅いという話は聞いていましたが、実際にベンチマークを取られた方がいました。 で、この処理が「遅い」という噂やツッコミを度々受けるので調べてみました。 「ほら、そんな気にするほどでも無いよ」という結果を期待していたのですが、、、なんじゃこりゃ。。。 劇遅じゃないですか、これ。 (中略) 細かい処理とはいえ、最大10倍違うわけですから・・・ 「@」でエラー抑制すると PHP が遅くなるという噂について : 管理人@Yoski これは配列のkeyチェックをするコードを対象としているので、@の効果のみによる遅さはよく分かりません。ということで、もっとシンプルに単純な代入のみで比べてみました。 ベンチマークプログラムはこんな感じ。 <?php require_once 'Benchmark/Timer.php'; define('COUNT', 1000000);

    PHPの@によるエラー抑制機能の遅さ - Blog::koyhoge::Tech
    HHR
    HHR 2009/01/28
  • PHP5の例外機能の使い方 - Blog::koyhoge::Tech

    PHP5ってどうするんだ PHP5になると美味しいことたくさん 色々組み込まれてる。XMLもDBも美味しい。 例外処理よくわからないから誰か教えて やめだやめだ!Ethnaでいくぞ! - 肉とビールとパンケーキ by @sotarok PHP5の例外機能をどう使えばいいかよく分からないという声をちらほら聞くので、チュートリアルぽく例外の説明をしたいと思います。 従来のエラー処理 まずは従来の一般的なエラー処理のやり方から。 例外機能のない従来のPHP4プログラミングでは、ある関数の中でエラーを返したい場合は、そのエラーを表す何がしかの値を関数の戻り値として返すことになります。 そのエラーを表す値を毎回決めるのは面倒なので、PEARのエラー処理スキームを利用することが広く行われています。その場合エラーが起きたらPEAR_Errorオブジェクトが返されることになります。 <?php requi

    PHP5の例外機能の使い方 - Blog::koyhoge::Tech
    HHR
    HHR 2009/01/28
    わかりやすい
  • 1