try、throw、catch・・・PHP5の例外処理
PHP4も今年で終焉を迎えるので、近頃はあせりつつPHP5を勉強中。
といっても、たいていの場合今まで使っていたプログラムは動きそうなので、追加された機能を勉強している、といったところ。
PHP5になって例外処理ができるようになったとのこと。今までは「プログラム内にコーディングしてたから、いらないんじゃないの?」とか思ったけど、少し勉強してみると、確かに便利なのかもしれない。
基本的な構文はこんな感じ。
try{
//処理を実行
//エラーが出たらthrowしてcatchへジャンプするよう宣言
if(エラー){throw new exception(‘エラーメッセージ’);}
//エラーじゃなかった場合の処理を続行
//エラーが出たらthrowしてcatchへジャンプするよう宣言
if(エラー){throw new exception(‘エラーメッセージ’);}
//エラーじゃなかった場合の処理を続行
//処理完了
}catch(exception $e){
echo $e->getMessage();
}
ここでexceptionというのは、あらかじめそういう名前のクラスが定義されているらしい。場合によってはexceptionクラスを拡張したものも使うらしい(使い方まだわかんないけど)。catchできない例外が投げられたらエラーらしい(そりゃそうだろう)。catchできない例外って・・・それはプログラムの書き手が自分で管理する部分・・・だな。それよりも、結局はエラーのパターンを想定してやることのほうが大事か・・・。疑問は尽きない。
ただ個人的には今まで手作業でやっていたところの書き方が変わるだけの感じ。まだなじめない。でも他のプログラム言語ではこれが一般的なわけで、徐々に慣れていかざるを得ないだろう。
何事につけても、現状で満足しているやり方を、新しいやり方に変更するのは気が重いものだと痛感・・・。
2008/02/06 at 7:04 PM
そのサンプルなら例外で処理すべき内容じゃ無い気も
するなぁ
どっちかって言うと
class TestException extends Exception {}
function test_a($a)
{
if(!$a)
{
throw new TestException();
}
if($a>100)
{
throw new TestException();
}
return $a * 10;
}
こんな関数を呼ぶ場合に
try
{
$result = test_a(100);
}
catch(TestException $e)
{
var_dump($e);
}
みたいな。
関数の呼び出し側でエラー処理を行いたい時に
例外じゃないとタイヘンだよね
2008/02/06 at 7:29 PM
コメントありがとうございます。いわれてみて、イメージ何となくつかめました。
まぁ、一回何か実際に書いてみないと・・・って感じですね。