| ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot |
例外(exceptions)目次PHP 5 は、他のプログラミング言語に似た例外モデルを有しています。 PHP 内で例外が投げられ (throw され)、それが 捕捉され (catch され) ます。発生した例外を 捕捉するには、コードを try ブロックで囲みます。 各 try ブロックには、対応する catch ブロックあるいは finally ブロックが存在する必要があります。 スローされるオブジェクトは、Exception クラスあるいは Exception のサブクラスのインスタンスでなければなりません。 それ以外のオブジェクトをスローしようとすると PHP の Fatal Error が発生します。 catchさまざまな型の例外を捕捉するために 複数の catch フロックを使用することができます。 通常の実行時 (try ブロック内で例外が投げられなかった 場合) は、catch ブロック内は処理されず、それ以降から処理が続けられます。 catch ブロックの中から例外を throw する (あるいは throw しなおす) こともできます。 例外が投げられた場合、その命令に続くコードは実行されず、 PHP は最初にマッチする catch ブロックを探します。 例外が捕捉されない場合、PHP は "Uncaught Exception ..." というメッセージとともに 致命的なエラー(fatal error)を発行します。 ただし、set_exception_handler() でハンドラが 定義されている場合を除きます。 In PHP 7.1 and later, a catch block may specify multiple exceptions using the pipe (|) character. This is useful for when different exceptions from different class hierarchies are handled the same. finallyPHP 5.5 以降では、catch ブロックの後に finally ブロックも指定できるようになりました。 finally ブロックの何かに書いたコードは、 try および catch ブロックの後で常に実行されます。 例外がスローさされたかどうかには関係ありません。 注意
ヒント
Standard PHP Library (SPL) には組み込みの例外が数多く用意されています。 例例3 例外を投げるには
<?php 上の例の出力は以下となります。 0.2 捕捉した例外: ゼロによる除算。 Hello World 例4 例外処理での finally ブロック
<?php 上の例の出力は以下となります。 0.2 First finally. 捕捉した例外: ゼロによる除算。 Second finally. Hello World 例5 ネストした例外
<?php 上の例の出力は以下となります。 string(4) "foo!" 例6 Multi catch exception handling
<?php 上の例の出力は以下となります。 string(11) "MyException" |
各種マニュアル:
PHPマニュアル |
PEARマニュアル |
Smarty(英語)マニュアル |
PHP-GTKマニュアル |
「例外(exceptions)」をGoogle検索
|