PHP7 のエラー処理メカニズムについて詳しく見てみましょう。PHP7 の新機能に関するチュートリアルを多数紹介しました。この記事が皆さんのお役に立てれば幸いです。
HP7 はグローバルなスロー可能なインターフェイスを実装しています。オリジナルの Exception と一部の Error はこのインターフェイス (インターフェイス) を実装し、インターフェイスの形式で例外の継承構造を定義します。その結果、PHP7 ではより多くのエラーがキャッチ可能な例外となり、キャッチされなかった場合はエラーとしてプログラム内で処理できるようになります。これらのキャッチ可能なエラーは通常、存在しない関数など、プログラムに致命的な害を及ぼさないエラーです。
1. Exception と Error という 2 つの例外クラスが存在します。
PHP7 には、Exception と Error という 2 つの例外クラスが追加されました。どちらのクラスも新しいインターフェイス Throwable を実装します。例外処理コードでは、型ヒントを調整する必要がある場合があります。試してください{
Not_exists_func();
} catch (EngineException $e) {
var_dump($e->getMessage());
}
string(44) "未定義関数 not_exists_func() の呼び出し"
一部の致命的なエラーと回復可能な致命的なエラーは、Error オブジェクトとして報告されるようになりました。エラー オブジェクトは Exception から独立しており、通常の try/catch ではキャッチできません。編集者注: エラー処理関数を登録する必要があります。以下の RFC を参照してください。
例外となったこれらの回復可能な致命的なエラーは、エラー ハンドラーを通じて黙って無視することはできません。特に、タイプヒントエラーは無視できません。
構文エラーは、Error オブジェクトを継承する ParseError オブジェクトをスローします。 eval() を処理する前に、潜在的にエラーが発生しやすいコードの戻り値または error_get_last() をチェックすることに加えて、ParseError オブジェクトもキャプチャする必要があります。
4. 内部オブジェクトの構築メソッドが失敗すると、常に例外がスローされます
内部オブジェクトの構築メソッドは、失敗すると常に例外を報告します。以前のコンストラクターの中には、NULL または使用できないオブジェクトを返すものがありました。
5. 一部のE_STRICTエラーのレベルが調整されました。