ホームページ > バックエンド開発 > PHPチュートリアル > PHP5の例外処理、エラースロー、コールバック関数など。

PHP5の例外処理、エラースロー、コールバック関数など。

WBOY
リリース: 2016-07-25 09:10:19
オリジナル
834 人が閲覧しました
  1. error_reporting(E_ALL&~E_NOTICE); // E_NOTICE に加えて、他の例外もトリガーされます (E_ALL&~E_NOTICE の二項演算結果は、E_NOTICE の対応するビットの値が 0 に設定されます) try- catch は、関数 __autoload() 内のクラス Valid に自動的にロードできません。
  2. try-catch は、trigger_error() によって引き起こされるエラーなどの例外やエラーをキャッチするために使用することはできません。 例外とエラーは異なります。
  3. try{
  4. // エラーを引き起こす可能性のあるコードを作成しています
  5. }catch(Exception $err){ // このエラー オブジェクトは型を宣言する必要があります。Exception はシステムのデフォルトの例外処理クラスです
  6. echo $err->getMessage( );
  7. }
コードをコピー

//thrown は次のような例外をスローします。 new Exception('エラー') がスローされました。 一例:

  1. try {
  2. if ( empty( $var1 ) ) throw new NotEmptyException();
  3. if ( empty( $var2 ) ) throw new NotEmptyException();
  4. if ( ! preg_match() ) throw new InvalidInputException( );
  5. $model->write();
  6. $template->render( 'success' );
  7. } catch ( NotEmptyException $e ) {
  8. $template->render( 'error_empty' );
  9. } catch (InvalidInputException $e) {
  10. $template->render( 'error_preg' );
  11. }
コードをコピー

Exception クラス構造: ほとんどのメソッドはオーバーライドが禁止されています (最終)

  1. Exception {
  2. /* 属性*/
  3. protected string $message;
  4. protected int $code;
  5. protected string $file;
  6. protected int $line;
  7. /* メソッド*/
  8. public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = null]]] )
  9. final public string getMessage ( void ) //例外によってスローされたメッセージ
  10. final public Exception getPrevious ( void ) //Previous Exception
  11. final public int getCode (void) //例外コード、これはユーザー定義です
  12. final public string getFile (void) //例外が発生したファイルパス
  13. final public int getLine (void) //例外が発生しました
  14. final public array getTrace (void) //例外追跡情報 (array)
  15. final public string getTraceAsString (void) //例外追跡情報 (string)
  16. public string __toString (void) //例外オブジェクトを直接処理しようとしています文字列として 使用時のサブ関数呼び出しの戻り値
  17. final private void __clone (void) //例外オブジェクトの複製時に呼び出される
  18. }
コードをコピー

拡張例外クラス try-catch には複数の catch 句を含めることができます。最初の catch 句から始めて、句内の例外変数の型が throw ステートメントによってスローされた例外の型と一致する場合、その句が実行され、他の catch 句は実行されません。それ以外の場合は、引き続き次の catch 句を試行します。Exception はすべての例外クラスの基本クラスであるため、異なる例外の種類に応じて異なる処理メソッドを使用する場合は、Catch 句が最後に来る例外タイプを使用する必要があります。 。 Exception はすべての例外の基本クラスであり、実際のニーズに応じて例外クラスを拡張できます。

  1. calss MyException extends Exception{
  2. public errType = 'default';
  3. public function __construct($errType=''){
  4. $this->errType = $errType;
  5. }
  6. }
  7. 新しいMyExceptionをスローしました(); // 例外をスローします
  8. try{
  9. // エラーを引き起こす可能性のあるコードを作成します
  10. }catch(MyException $err){ // このエラー オブジェクトは型を宣言する必要があります
  11. echo $err->errType() ;
  12. }catch(ErrorException $err){ //ErrorException は PHP 5 で追加された例外クラスで、Exception
  13. echo 'error !';
  14. }catch(Exception $err){
  15. redirect('/error.php' );
  16. }
コードをコピー

catch 句で例外のタイプを決定したり、コードやその他の情報に基づいて例外を処理するかどうかを決定したりできます。catch 句をアンロードしたコードがキャッチした例外を適切に処理できない場合は、キャッチ句内で例外をスローし続けることができます。 catch 句で例外が発生しました。

3. 例外コールバック関数 set_Exception_handler(callback functionName) //この関数は、Exception またはそのサブクラスの例外が発生したときに呼び出されます。 functionExceptionHandlerFun($errObj){ // 例外例外コールバック関数には、スローされた例外オブジェクトであるパラメータが 1 つだけあります。 //...... }

例外例外のコールバック関数は、set_error_handlerのコールバック関数のようにtrueを返して例外を排除することはできません。コールバック関数が例外を処理しても後続のコードは実行されませんので、後続のコードを実行し続けたい場合はtry-catchする必要があります。使用済み 。 ただし、例外があります。スクリプト終了コールバック関数は実行でき、スローされた例外が処理されない場合でもコールバック関数は実行できます。 register_shutdown_function(コールバック関数名[,引数1,引数2,...]); 例えば:

  1. function shutdownfunction(){

  2. echo 'スクリプトは終了';
  3. }

  4. register_shutdown_function("shutdownfunction");

コードをコピー

shutdownfunction() はスクリプトの最後で実行されるため、このコールバック関数は、エラーがスローされた後に関数が定義されている場合でも、スクリプト内の任意の場所で関数を呼び出すことができます (関数定義はスクリプトはコンパイル時に完了します)。

4.trigger_error(string errorMsg[,int user_error_type]) この関数は、エラーをアクティブにトリガーするために使用されます。 user_error_type には、E_ALL、E_USER_ERROR、E_USER_WARNING、E_USER_NOTICE、またはそれらの組み合わせの値のみを指定できます。 set_error_handler(callbeck functionName[,user_error_type]); //システムによってスローされたエラーや、trigger_error() 関数を使用してユーザーによってトリガーされたエラーなどのエラーを処理するために、trigger_error() のコールバック関数を設定します。

オプションのパラメータ user_error_type: このパラメータを設定すると、trigger_error でスローされたエラーの種類が user_error_type の定義範囲と一致する場合にのみコールバック関数を起動できます。 この値は、error_reporting() 関数と同様に設定されます。

最初のパラメータ (コールベック関数名): 関数名には 5 つのパラメータを含めることができ、そのうち最初の 2 つは必須です。 trigger_error がスローする user_error_type、trigger_error がスローする errorMsg、エラーをスローするファイルの絶対パス、エラーをスローする行番号、およびエラーがスローされたときのコンテキスト (trigger_error がスローされるスコープ内のすべてを含む配列) () には変数、関数、クラス、その他のデータが配置されます。 コールバック関数の戻り値: false が返された場合、システム エラー処理メカニズムはエラーをスローし続け、エラーを解消するために true を返すか戻り値を返しません。 trigger_error() によってトリガーされたエラーは、try-catch 例外キャッチ ステートメントではキャッチされません。



ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート