2010年3月30日火曜日

PHP:例外をメッセンジャーとして使ってみる

プログラミングで一番重要で面倒でつまらないのがエラー処理で、
少しでも楽にならないかと、例外を使うことにしたわけですが・・・

エラー処理の中でも、一番面倒でつまらないエラーメッセージの扱いが楽にならないか例外使ってみました。って、簡単な話で、例外中にエラーメッセージ入れて飛ばします。


class AppException extends Exception {}
try {
  try {
    ABC::do_something();
  } 
  catch( NotBadAbcException $e ) {
    throw new AppException( 'ちょっと変だよ' ); 
  }
  if( !ABC::count_something() ) {
    throw new AppException( '何もないよ' ); 
  }
}
catch( AppException $e ) {
  $error_msg = $e->getMessage(); 
}
catch( Exception $e ) {
  $error_msg = '申し訳ございませんッ!'; 
}

AppExceptionというは、エラーメッセージを運ぶための例外です。
下流のライブラリで例外をキャッチしたら、適当なエラーメッセージをAppExceptionに入れて飛ばします。その他、どんな条件でも問題があればAppExceptionを投げます。

で、AppException以外の例外は極めて深刻なエラーでしょうから、ひたすら謝るとかするわけです。実際は、もう少し細かく対応すると思いますが、こんな使い方です。

ようするにgoto文のような使い方ですね。
でもメッセージを内包できるのが少し楽。

これで実際に開発してみたのですが、ほんのちょっとコードが見やすくなったと思います。またエラーが起きた場所でエラーメッセージを書くので、的確なメッセージを考えやすいのもいいです。

0 件のコメント: