php異常処理の深さ

5500 ワード

引き出し
クラスを調整し、呼び出し時にデータ検証タイムズが間違っている場合は、どのように返しますか?
配列、ブール値?
配列これは間違いの原因を持って帰ってもいいですが、ブール値は?
falseを返して、エラーを報告する時にエラーをクラス変数に入れますか?それとも、エラーを取得する方法で取得しますか?
上記の場合はコードに全く問題がない場合です.サードパーティのツールパッケージであれば、彼の実行がシステム全体を崩壊させるかどうかをどのように知っていますか.
ローカル運行は大丈夫だと言っていますが、環境というものは言いにくいです.
異常というものを使いました
次は私たちが理解しなければならない問題です.
いつ異常を投げますか.どうやって異常を受けますか?異常はどのように処理しますか?彼の使用シーンは何ですか.
基礎知識
  • 基礎操作try...catch()throw
  • エラーレベル致命エラーE_ERROR,構文エラーE_PARSE,警告エラーE_WARNING,通知エラーE_NOTICE
  • php異常処理クラス
  • 定義済み例外
        * ErrorException (extends Exception)

    SPL異常類
        * LogicException (extends Exception)      //              。               
            * BadFunctionCallException            //                         
                * BadMethodCallException          //                            
            * DomainException                     //                    
            * InvalidArgumentException            //                
            * LengthException                     //            
            * OutOfRangeException                 //             ,              
    
        * RuntimeException (extends Exception)    //                
            * OutOfBoundsException                //              ,               
            * OverflowException                   //                  
            * RangeException                      //                     。        /overflow          。      DomainException  
            * UnderflowException                  //            (     )      
            * UnexpectedValueException            //                。  ,                         (             ) ,        
  • 異常処理相関関数
  •     error_reporting //          
        register_shutdown_function //       php        
        set_error_handler //               
        set_exception_handler //               
        error_get_last //          

    シーンの操作
  • システムは主に予測できないエラーをつかんで、統一的に戻って、tryを使用していません...catch受信異常直接ジャンプ設定の方法における
  • ツールは、エラーが発生したら直接投げ出すカスタム例外を定義します.ツールを使用するプログラムはExceptionで異常を受信するだけでよく、すべての異常はこれによって処理される
  • である.
    
    
    db = new PDO($config);
    
            if ($this->db == false) {
                throw new Pdo("    ");
            }
        }
    }
    
    ?>

    文章の例
  • キット例
  • プロジェクト例
  • FQA
    1、なぜカスタム例外クラスを注文するのか、システムはすでに多くの選択肢を与えているのではなく、多くのcomposerパッケージには継承されているだけです.
    答:実はカスタム例外は、異常粒子度を区別するために使用されます.例えば、
    注文異常、商品異常、ユーザー異常類を注文しましたが、注文の異常は多種多様で、例えば注文支払い異常、注文生成異常です.
    * RuntimeException (extends Exception)
        * Order
            * Paymen
            * Created
        * Goods
        * User
            * Withdraw
    

    アイテムが例外を放出した場合

    異常クラス名により、注文支払い異常であることがわかります.ここはエラー番号の代わりに、より明確にすることができます.
    2、なぜcomposerパッケージのカスタム例外があるのか、いろいろな方法があります.何か役に立つことがありますか.
    作用1:フォーマット異常
    例えば、「id=xxのユーザーは存在しない」という異常なヒントを投げ出すと、次の2つの書き方があります.

    役割2:コンポーネントレベルの例外