 |

|
徹底比較!! PHP & Java
|
第5回:PHP5のオブジェクト指向
著者:ワイズノット 土橋 芳孝 2004/12/17
|
|
|
前のページ 1 2 3 次のページ
|
 |
PHP5版 例外処理
|
つぎに本連載の第3回「PHP4とJavaのオブジェクト指向」で登場した「例外処理」をPHP5で検証してみます。
|
PHP5版 例外処理
|
<?php
// file1.txtの処理を実施する
try {
// file1.txtを開く
if(($handle1 = fopen("file1.txt", "r")) == false) {
throw(new Exception(
"file1.txtを開くことができません。"));
} else {
echo "file1.txtを開きました。\n";
}
// file1.txtの内容を表示する
while(! feof($handle1)) {
echo fgets($handle1);
}
// file1.txtを閉じる
if($handle1 != false) {
if(fclose($handle1) == false) {
throw(new Exception(
"file1.txtを閉じることができません。"));
} else {
echo "file1.txtを閉じました。\n";
}
}
} catch(Exception $e) {
echo $e->getMessage()."\n";
// file1.txtを閉じる
if($handle1 != false) {
if(fclose($handle1) == false) {
echo "file1.txtを閉じることができません。\n";
} else {
echo "file1.txtを閉じました。\n";
}
}
}
// file2.txtの処理を実施する
try {
// file2.txtを開く
if(($handle2 = fopen("file2.txt", "r")) == false) {
throw(new Exception(
"file2.txtを開くことができません。"));
} else {
echo "file2.txtを開きました。\n";
}
// file2.txtの内容を表示する
while(! feof($handle2)) {
echo fgets($handle2);
throw(new Exception("エラー発生!!"));
}
// file2.txtを閉じる
if($handle2 != false) {
if(fclose($handle2) == false) {
throw(new Exception(
"file2.txtを閉じることができません。"));
} else {
echo "file2.txtを閉じました。\n";
}
}
} catch(Exception $e) {
echo $e->getMessage()."\n";
// file2.txtを閉じる
if($handle2 != false) {
if(fclose($handle2) == false) {
echo "file2.txtを閉じることができません。\n";
} else {
echo "file2.txtを閉じました。\n";
}
}
}
// file3.txtの処理を実施する
try {
// file3.txtを開く
if(($handle3 = fopen("file3.txt", "r")) == false) {
throw(new Exception(
"file3.txtを開くことができません。"));
} else {
echo "file3.txtを開きました。\n";
}
// file3.txtの内容を表示する
while(! feof($handle3)) {
echo fgets($handle3);
}
// file3.txtを閉じる
if($handle3 != false) {
if(fclose($handle3) == false) {
throw(new Exception(
"file3.txtを閉じることができません。"));
} else {
echo "file3.txtを閉じました。\n";
}
}
} catch(Exception $e) {
echo $e->getMessage()."\n";
// file3.txtを閉じる
if($handle3 != false) {
if(fclose($handle3) == false) {
echo "file3.txtを閉じることができません。\n";
} else {
echo "file3.txtを閉じました。\n";
}
}
}
?>
|
PHP5版 例外処理の実行結果
|
file1.txtを開きました。
###########################
## file1.txtの内容 ##
###########################
file1.txtを閉じました。
file2.txtを開きました。
###########################
エラー発生!!
file2.txtを閉じました。
file3.txtを開きました。
###########################
## file3.txtの内容 ##
###########################
file3.txtを閉じました。
|
上記のとおり、PHP5版の例外処理ではJavaのような例外のハンドリングが可能となっています。そのため機能の境界線が明確になり、コードの再利用性や拡張性を容易に確保できます。コードもPHP4版の例外処理と比較して非常に読みやすいものとなっています。PHP5のtry?catch構文にはfinally節が存在しないため、ファイルを確実に閉じるためにはファイルのクローズ処理を複数記述しなければなりませんが、それでもPHP4と比較するとPHP5の例外処理は大幅に進化したといえます。
|
前のページ 1 2 3 次のページ
|

|
|

|
著者プロフィール
株式会社ワイズノット 土橋 芳孝
以前はJavaを利用したWebアプリケーション開発とオブジェクト指向設計を得意としていたが、ワイズノットに入社以来、PHPの魅力にとりつかれる。現在はワイズノットのプロジェクトマネージャーとして、PHPをはじめとしたオープンソースの普及に力を注いでいる。
|
|
|
|