タグ

2015年12月2日のブックマーク (6件)

  • Perlにおける例外処理

    自分でも少し不安なところがあるので、もしかしたら嘘を書いてしまうかもしれませんがご勘弁下さい。 なんだか例外というと、まるで下のような割り算において0で割ったしまったような時に起こるもののように感じるかもしれません。 use strict; use warnings; print &div( 10, 5 ); print &div( 10, 0 ); print "終了!\n"; sub div { my $arg1 = shift; my $arg2 = shift; my $ans = $arg1 / $arg2; my $string = "$arg1 / $arg2 = $ans\n"; return $string; } を実行すれば、 Illegal division by zero at testException1.pl line 10. 10 / 5 = 2 のように途中

    note103
    note103 2015/12/02
  • Perlで例外オブジェクトをeval & catch - はこべにっき ♨

    ひさびさにPerlベストプラクティスネタ。 Perlで例外処理というと、evalして$EVAL_ERROR(= $@)の文字列を判定するしかないと思っていたのだけれど、ちゃんと例外オブジェクト使う方法があった。やっぱりなんでもありだなPerlは。 PBPによると、例外オブジェクトは自分で作ることもできるのだけれど、いくつも注意しなければならないポイントがあるようだ。 文字列変換(q{""})のオーバーロード 例外をキャッチしたかを返すcaughtメソッド エラーメッセージの出力先の変更 このあたりが正しく実装できていなければだめ。しかしながら、CPANにちょっとお伺いをたてるだけで、例外用のException::Classといういかにも便利そうなモジュールを利用できるらしい。 このException::Classを利用して、Perlの例外オブジェクトを定義してみた。 use warning

    Perlで例外オブジェクトをeval & catch - はこべにっき ♨
    note103
    note103 2015/12/02
  • Perlの例外処理の仕組みを理解しよう - Perl入門ゼミ

    Perl › here Perlではエラーの通知に例外処理を使用することができます。例外処理はとても簡単です。例外を発生させる方法と例外をキャッチする方法を覚えればよいだけだからです。 例外を発生させる 例外を発生させるにはdie関数を使用します。dieが実行されるとプログラムはエラーステータスで終了します。dieには文字列を渡すことができます。 # 例外を発生させる die $message; 例外を発生させるサンプルを書いてみます。関数の中で値が正の整数ではなかった場合に例外を発生させるようにしています。プログラムはメッセージを表示して終了します。 # 値のチェック。正の整数ではないので例外が発生し、プログラムは終了する。 is_int('a'); sub is_int { my $num = shift; # 値が正の整数でない場合に例外を発生させる die "\"$num\" mu

    Perlの例外処理の仕組みを理解しよう - Perl入門ゼミ
    note103
    note103 2015/12/02
  • 最近のPerl例外厨事情 | おそらくはそれさえも平凡な日々

    言及してくれていたのをずっと放置していた。 http://soh335.hatenablog.com/entry/2013/06/04/114954 最近結構例外厨で、事あるごとに例外投げたくなってる。結局エラー文字列を正規表現で引っ掛けるより、オブジェクトで引っ掛けたほうがエラーメッセージとかが変わった時に対応が少なくて楽だし、例外を階層化して置いたほうが色々捗る感じがしているので、丁寧に例外オブジェクト投げるように色々ラップしたほうが良いなーとか思ってる。 他言語の人にとっては何を今更みたいな話かもしれませんね。 例えば、Tengの場合だとこんな感じで、Tengはエラー投げるところがhandle_error()で一化されているので、そこをオーバーライドすれば自分の好みの例外を投げ分けるとかができる。この場合だとユニークキー制約に引っかかった場合は異なる例外を投げるようにしてある。My

    最近のPerl例外厨事情 | おそらくはそれさえも平凡な日々
    note103
    note103 2015/12/02
  • Perl-Entrance-Textbook/exception.md at master · perl-entrance-org/Perl-Entrance-Textbook

    アプリケーションを開発する中で, 「ある処理」を行った時に異常事態が生じうるような場合は, 多々想定できると思います. 例えば, アプリケーションからMySQLなどのミドルウェアを操作しようとした時に, ミドルウェアが起動されていない場合, アプリケーションが行おうとしていたミドルウェアの操作は当然ながら実施することが出来ません. また, アプリケーションからミドルウェアを操作できたとしても, 操作した結果ミドルウェアでエラーが発生するといったパターンもあるでしょう. このような異常事態が発生した場合, アプリケーションは期待する挙動を実現出来なくなってしまいます. そこで大抵のプログラミング言語には, このような異常を表現する「例外」という仕組みが提供されており, 例外をきっかけに現在の処理を中止して, 別の処理(例外処理)を行える仕組みが提供されています. 稿では, まずPerlにお

    Perl-Entrance-Textbook/exception.md at master · perl-entrance-org/Perl-Entrance-Textbook
    note103
    note103 2015/12/02
  • はてなブログ | 無料ブログを作成しよう

    初めて気がつく瞬間 子どもと一緒に過ごすようになってから、初めてべるものの反応を楽しみにしてきた。初めてのコーラとか、初めてのグミ、初めてのガリガリくんとか。明らかにおいしいものじゃなくてもいい。初めてのウニとか初めてのゴーヤとか。目を見開いて驚いたり、文字で表現し…

    はてなブログ | 無料ブログを作成しよう
    note103
    note103 2015/12/02