PHPベストプラクティスの異常とエラー
3924 ワード
異常
1).例外はExceptionクラスのオブジェクトで、リモートAPIが応答していないか、データベースクエリが失敗したか、プログラムの実行の前置条件を満たすことができないなど、修復できない状況に遭遇したときに投げ出されます.問題が発生した場合、異常は自発的に出撃し、職責を委託するために使用される.異常は守備にも用いられ、潜在的な問題を予測して影響を軽減することができる.2).Exceptionオブジェクトは、他のPHPオブジェクトと同様にnewキーを使用してインスタンス化されます.
1番目のパラメータはメッセージで、2番目のパラメータはデジタルコードです.数値コードはオプションで、指定した例外にコンテキストを提供します.開示された例示的な方法
4).Exceptionクラスまたはそのサブクラスを投げ出さなければなりません.PHPに内蔵されている異常クラスとそのサブクラスは以下の通りです. Exception ErrorException PHP標準ライブラリには、以下の追加のExceptionサブクラスが用意されており、PHP内蔵の例外クラスが拡張されています. LogicException BadFunctionCallException BadMethodCallException
DomainException InvalidArgumentException LengthException OutOfBoundsException RuntimeException OutOfBoundsException OverflowException RangeException UnderflowException UnexpectedValueException
5).例外をキャプチャします.異常を予測してキャプチャして処理するのは、キャプチャされていない異常がPHPアプリケーションの実行を終了し、エラー情報を表示する可能性があるため、私たち自身の責任です.潜在的な異常をブロックして処理する方法は、try/catchブロックに異常を投げ出す可能性のあるコードを置くことである.
複数の例外を連続的に放出することもできます
ある異常をキャプチャするときは、1つのcatchブロックしか許可されません.PHPに適用可能なcatchブロックが見つからない場合は、PHPスクリプトが致命的なエラーで終了するまで、異常が上に泡が立ちます.6).例外ハンドラ.グローバルな例外ハンドラを使用して、取得されていないすべての例外をキャプチャできます.例外取得プログラムは、Exceptionタイプのパラメータを受け入れなければなりません.例外取得プログラムはset_を使用します.exception_handler()関数登録.
エラー
1).error_を使用できますReporting()関数またはphp.iniファイルでerror_を使用するReporting命令はPHPにそれらのエラーを報告または無視するように伝えます.どちらもE_*を使用しています定数で確定します.2)エラー報告方式四原則:必ずPHPにエラーを報告させる 開発環境でエラーを表示する 再生産環境でエラーを表示できない 開発および生産環境においてエラーを記録する 3)php.ini構成の例:開発環境:
生産環境:
4).グローバルエラーハンドラの登録:set_error_handler()関数.
5.簡単なグローバルエラーハンドラの例:
関連処理コンポーネント開発環境:filp/whoops 生産環境:monolog/monolog 特集シリーズ
PHP特集シリーズ目次住所:https://github.com/xx19941215/webBlog PHP特集シリーズは20編ぐらい書く予定で、主に私たちの日常のPHP開発の中で無視しやすい基礎知識と現代のPHP開発の中で規範、配置、最適化に関するいくつかの実戦的な提案を総括し、同時にJavascript言語の特徴に対する深い研究もある.
1).例外はExceptionクラスのオブジェクトで、リモートAPIが応答していないか、データベースクエリが失敗したか、プログラムの実行の前置条件を満たすことができないなど、修復できない状況に遭遇したときに投げ出されます.問題が発生した場合、異常は自発的に出撃し、職責を委託するために使用される.異常は守備にも用いられ、潜在的な問題を予測して影響を軽減することができる.2).Exceptionオブジェクトは、他のPHPオブジェクトと同様にnewキーを使用してインスタンス化されます.
1番目のパラメータはメッセージで、2番目のパラメータはデジタルコードです.数値コードはオプションで、指定した例外にコンテキストを提供します.開示された例示的な方法
getCode
およびgetMessage
を使用して、例外オブジェクトの2つの属性を得ることができる.3).異常が発生したり、現在の条件で操作できない場合は、異常を投げ出す必要があります.
4).Exceptionクラスまたはそのサブクラスを投げ出さなければなりません.PHPに内蔵されている異常クラスとそのサブクラスは以下の通りです.
5).例外をキャプチャします.異常を予測してキャプチャして処理するのは、キャプチャされていない異常がPHPアプリケーションの実行を終了し、エラー情報を表示する可能性があるため、私たち自身の責任です.潜在的な異常をブロックして処理する方法は、try/catchブロックに異常を投げ出す可能性のあるコードを置くことである.
try {
$pdo = new PDO('mysql://host=wrong_host;dbname=wrong_name');
} catch (PDOException $e) {
$code = $e->getCode();
$message = $e->getMessage();
echo 'Something went wrong.Check back soon, please';
exit;
}
複数の例外を連続的に放出することもできます
try {
throw new Exception('Not a PDO exception');
$pdo = new PDO('mysql://host=wrong_host;dbname=wrong_name');
} catch (PDOException $e) {
echo 'Caught PDO exception';
} catch (Exception $e) {
//
echo 'Caught generic exception';
} finally {
//
echo 'Always do this';
}
ある異常をキャプチャするときは、1つのcatchブロックしか許可されません.PHPに適用可能なcatchブロックが見つからない場合は、PHPスクリプトが致命的なエラーで終了するまで、異常が上に泡が立ちます.6).例外ハンドラ.グローバルな例外ハンドラを使用して、取得されていないすべての例外をキャプチャできます.例外取得プログラムは、Exceptionタイプのパラメータを受け入れなければなりません.例外取得プログラムはset_を使用します.exception_handler()関数登録.
エラー
1).error_を使用できますReporting()関数またはphp.iniファイルでerror_を使用するReporting命令はPHPにそれらのエラーを報告または無視するように伝えます.どちらもE_*を使用しています定数で確定します.2)エラー報告方式四原則:
;
display_startup_errors = On
display_errors = On
;
error_reporting = -1
;
log_errors = On
生産環境:
;
display_startup_errors = Off
display_errors = Off
; ,
error_reporting = E_ALL & ~E_NOTICE
;
log_errors = On
4).グローバルエラーハンドラの登録:set_error_handler()関数.
5.簡単なグローバルエラーハンドラの例:
set_error_handler(function($errno, $errstr, $errfile, $errline) {
if (!(error_reporting() & $errno)) {
//error_reporting ,
return;
}
throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
});
//
//
restore_error_handler();
関連処理コンポーネント
PHP特集シリーズ目次住所:https://github.com/xx19941215/webBlog PHP特集シリーズは20編ぐらい書く予定で、主に私たちの日常のPHP開発の中で無視しやすい基礎知識と現代のPHP開発の中で規範、配置、最適化に関するいくつかの実戦的な提案を総括し、同時にJavascript言語の特徴に対する深い研究もある.