ホームページ  >  記事  >  バックエンド開発  >  [PHPマニュアル]例外処理

[PHPマニュアル]例外処理

不言
不言オリジナル
2018-04-19 09:35:272313ブラウズ

この記事では、[php マニュアル] の例外処理を紹介します。これを必要とする友人に参照してもらいます

PHP 5

try コード ブロック (スロー) でスローされます。例外、catch コード ブロックで例外をキャッチします

すべての試行には、対応する catch ブロックまたはfinally ブロックが少なくとも 1 つ必要です。

スローされるオブジェクトは、Exception クラスまたは Exception のサブクラスのインスタンスである必要があります。それ以外の場合は、PHP の致命的なエラーが発生します。

    try {      throw new Exception('异常提示语');      //throw 123;  //Fatal error: Uncaught Error: Can only throw objects 
      //throw new stdClass(); //Fatal error: Uncaught Error: Cannot throw objects that do not implement Throwable
    } catch (Exception $e) {      echo  $e->getMessage();
    }


catch

複数の catch ブロックを使用して、さまざまなカテゴリの例外をキャッチできます。

通常の実行 (try ブロック内で例外がスローされない場合) は、シーケンス内で定義された最後の catch ブロックの後に続行されます。

例外は catch ブロックでスロー (または再スロー) できます。

例外がスローされると、ステートメントに続くコードは実行されず、PHP は最初に一致する catch ブロックを見つけようとします。

例外がキャッチされない場合、set_Exception_handler() を使用してハンドラーが定義されていない限り、「Uncaught Exception...」というメッセージを含む PHP 致命的エラーが発行されます。



finally

PHP 5.5 以降では、catch ブロックの後、またはその代わりに、finally ブロックを指定することもできます。

例外がスローされるかどうかに関係なく、finally ブロック内のコードは常に try ブロックと catch ブロックの後、通常の実行が再開される前に実行されます。

Example #4 Exception handling with a finally block(用finally块处理异常)<?phpfunction inverse($x) {
    if (!$x) {        throw new Exception(&#39;pision by zero.&#39;);
    }    return 1/$x;
}try {    echo inverse(5) . "\n";
} catch (Exception $e) {    echo &#39;Caught exception: &#39;,  $e->getMessage(), "\n";
} finally {    echo "First finally.\n";
}try {    echo inverse(0) . "\n";
} catch (Exception $e) {    echo &#39;Caught exception: &#39;,  $e->getMessage(), "\n";
} finally {    echo "Second finally.\n";
}// Continue executionecho "Hello World\n";?>

Example #5 Nested Exception (嵌套异常)<?phpclass MyException extends Exception { }class Test {
    public function testing() {
        try {            try {                throw new MyException(&#39;foo!&#39;);
            } catch (MyException $e) {                // rethrow it
                throw $e;
            }
        } catch (Exception $e) {
            var_dump($e->getMessage());
        }
    }
}$foo = new Test;$foo->testing();?>

Note 
set_exception_handler()设置用户自定义的异常处理函数
Exception::getMessage 获取异常消息内容

関連おすすめ:

【phpクラスとオブジェクト】オブジェクトのシリアル化

以上が[PHPマニュアル]例外処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。