PHPの例外処理とは?try・catch・finallyの基本構文と実装例をわかりやすく解説
例外(Exception)とは、プログラムの実行中に発生する予期しない問題やエラーのことです。プログラムの実行中に例外が発生すると、そのステートメント以降のコードは実行されず、PHPは最初に一致するcatchブロックを探そうとします。もし例外がどこでも捕捉されなかった場合、「Uncaught Exception(未捕捉の例外)」というメッセージとともにPHP Fatal Errorが発生し、プログラムは強制終了されます。
例外処理の基本構文
PHPの例外処理は、try・catch・finally の3つのブロックを組み合わせて記述します。
- tryブロック: 例外が発生する可能性のあるコードを記述します。例外を投げるには
throwキーワードを使用します。 - catchブロック: tryブロック内でスローされた例外を受け取り、適切な処理を行います。
- finallyブロック: 例外の有無にかかわらず、必ず実行されるコードを記述します。リソースの解放などに便利です。
try {
print "this is our try block";
throw new Exception();
} catch (Exception $e) {
print "something went wrong, caught yah! n";
} finally {
print "this part is always executed";
}
実装例
以下は、関数内で例外処理を実装した具体的なサンプルコードです。引数の値が「6」の場合にのみ例外がスローされる仕組みになっています。
<?php
function printdata($data) {
try {
// 引数が6の場合のみif文の中身が実行される
if($data == 6) {
// 例外をスローする
throw new Exception('Number is six.');
echo "\n After throw (It will never be executed)";
}
}
// tryブロックで例外がスローされた場合に実行される
catch(Exception $e){
echo "\n Exception Caught", $e->getMessage();
}
// このブロックは例外の有無にかかわらず必ず実行される
finally{
echo "\n Final block will be always executed";
}
}
// ここでは例外は発生しない
printdata(0);
// ここで例外が発生する
printdata(6);
?>
実行結果
Final block will be always executed Exception CaughtNumber is six. Final block will be always executed
この実行結果から、次のことが確認できます。
printdata(0)を呼び出した場合は例外がスローされないため、finallyブロックだけが実行されます。printdata(6)を呼び出すと例外がスローされ、throw文以降のコードはスキップされてcatchブロックへ移行します。その後、finallyブロックが実行されます。
例外処理を書く際のポイント
例外を適切に処理するためには、プログラムコードをtryブロック内に記述する必要があります。また、各tryブロックには少なくとも1つの対応するcatchブロックが必須です。さらに、複数のcatchブロックを併用すれば、例外の種類(クラス)ごとに異なる処理を振り分けることも可能です。これにより、ファイル操作やデータベース接続など、エラーが起こりやすい処理でも安全かつ柔軟に対応できるようになります。
-
PHPファイルとは?開き方・編集・変換方法をわかりやすく解説
PHPファイルとは .phpという拡張子を持つファイルは、PHP(Hypertext Preprocessor)のソースコードが記述された「PHPソースコードファイル」です。主にWebページのファイルとして利用され、Webサーバー上で動作するPHPエンジンによってHTMLを生成します。 ブラウザに表示されるのは、PHPエンジンがコードから生成したHTMLコンテンツです。PHPコードはサーバー側で実行されるため、PHPページにアクセスしてもコードそのものは見えず、サーバーが生成したHTMLだけを受け取る仕組みになっています。 なお、PHPソースコードファイルの中には、.phtml、.php3、.
-
Pythonの例外処理とは?エラーと例外の違いを初心者向けに解説
エラーと例外の違いプログラムにおける「エラー」とは、構文エラーのように、コンパイル時(実行前)に発生する問題を指します。たとえば、以下のようなコードは文法的に誤りがあるため、実行する前にエラーとして検出されます。abe = 5実行結果:SyntaxError: cant assign to literalこの例では、文字列リテラルに値を代入しようとしているため、「SyntaxError(構文エラー)」が発生します。このようにコードの書き方自体に問題がある場合は、実行前にPythonインタプリタが検出してくれます。例外(Exception)とは何か一方で、文や式が構文的に正しくても、実際に実行し