PHP7の例外とエラー
以前のバージョンのPHPでは、例外しか処理できませんでした。エラーを処理できませんでした。致命的なエラーの場合、アプリケーション全体またはアプリケーションの一部を停止するために使用されていました。この問題を克服するために、PHP7は例外とエラーの両方を処理するためのthrowableinterfaceを追加しました。
例外: 致命的で回復可能なエラーが発生した場合は常に、PHP 7は、アプリケーションまたはスクリプトの実行全体を停止する代わりに、例外をスローします。
エラー: PHP 7は、TypeError、ArithmeticError、ParserError、およびAssertionErrorをスローしますが、警告および通知エラーは変更されません。 try / catchブロックを使用すると、エラーインスタンスをキャッチでき、FatalErrorsがエラーインスタンスをスローできるようになりました。 PHP 7では、スローアブルインターフェイスが追加され、スローアブルを実装するために2つの例外ブランチExceptionとErrorが統合されています。
例
<?php class XYZ { public function Hello() { echo "class XYZ\n"; } } try { $a = new XYZ(); $a->Hello(); $a = null; $a->Hello(); } catch (Error $e) { echo "Error occurred". PHP_EOL; echo $e->getMessage() . PHP_EOL ; echo "File: " . $e->getFile() . PHP_EOL; echo "Line: " . $e->getLine(). PHP_EOL; } echo "Continue the PHP code\n"; ?>
上記のプログラムでは、次のエラーが発生します-
class XYZ Error occurred Call to a member function Hello() on null File: /home/cg/root/9008538/main.php Line: 11 Continue with the PHP code
注: 上記の例では、nullオブジェクトのメソッドを呼び出します。キャッチは、例外を処理してからPHPコードを続行するために使用されます。
算術エラー
<?php $x = 10; $y = 0; try { $z = intdiv($x , $y); } catch (DivisionByZeroError $e) { echo "Error has occured\n"; echo $e->getMessage() . PHP_EOL ; echo "File: " . $e->getFile() . PHP_EOL; echo "Line: " . $e->getLine(). PHP_EOL; } echo "$z \n"; echo " continues with the PHP code\n"; ?>
出力
上記のプログラムの出力は、警告エラー-
で実行されます。Division by zero File: /home/cg/root/9008538/main.php Line: 5 continues with the PHP code
注: 上記のプログラムでは、intdiv()関数内のDivisionByZeroErrorをキャッチして報告します。
-
PHPのuser_error()関数
user_error()関数は、PHPのtrigger_error()関数のエイリアスです。これは、ユーザーエラー条件をトリガーするために使用され、組み込みのエラーハンドラーと組み合わせて使用することも、新しいエラーハンドラーとして設定されたユーザー定義関数と組み合わせて使用することもできます。 構文 user_error(error_msg, error_type) パラメータ error_msg-エラーメッセージを指定します。長さは1024文字に制限されています。 error_type-このエラーメッセージのエラータイプを指定します。 考えられるエラーの種類は次の
-
PHPのerror_get_last()関数
error_get_last()関数は、最後に発生したエラーを連想配列として取得します。連想配列には4つのキーが含まれています- [タイプ]-エラータイプについて説明します [メッセージ]-エラーメッセージについて説明します [ファイル]-エラーが発生したファイルについて説明します [行]-エラーが発生した行を説明します 構文 error_get_last() パラメータ NA 戻る error_get_last()関数は、キー「type」、「message」、「file」、および「line」を使用して最後のエラーを記述する連想配列を返します。エラーがまだ