- class Exception
- {
- protected $message = '不明な例外'; // 例外メッセージ
- protected $code = 0; // ユーザー定義の例外コード
- protected $file;例外ファイル名
- protected $line; // 例外が発生したコード行番号
- function __construct($message = null, $code = 0);
- final function getMessage() // 例外情報を返す
- final function getCode(); ; // 例外コードを返す
- final function getFile() // 例外が発生したファイル名を返す
- final function getLine() // 例外が発生したコードの行番号を返す
- final function getTrace(); / backtrace() 配列
- final function getTraceAsString(); // 文字列にフォーマットされた GetTrace() 情報
- /* オーバーロード可能なメソッド*/
- function __toString() // 出力可能な文字列
- }
- ?>
-
コードをコピー
簡単な例: (例外を通じてエラーメッセージをスローする)
- try {
- $error = 'my error!';
- throw new Exception($error)
- } catch (Exception $e) {
- echo $e->getMessage() ;
- }
-
コードをコピー
2. このクラスを展開します。
- class MyException extends Exception
- {
- // コンストラクターを再定義して、メッセージを指定する必要があるプロパティにします
- public function __construct($message, $code = 0) {
- // Customized code
- // すべての変数が正しく割り当てられていることを確認します
- parent::__construct($message, $code);
- }
- // 文字列出力のスタイルをカスタマイズします
- public function __toString() {
- return __CLASS__ . $this->code}]: {$this->message}n";
- }
- public function customFunction() {
- echo "このタイプの例外に対するカスタム関数";
- }
- }
-
Copyコード
例外処理の基本的な考え方は、コードが try コード内で呼び出されて実行されるというものです。 try コード ブロックでエラーが発生した場合は、例外処理を実行できます。 Java などの一部のプログラミング言語は、特定の状況下で自動的に例外をスローします。 PHP では、例外を手動でスローする必要があります。例外は次のようにスローされます。
新しい例外をスローします('メッセージ',コード);
Throw キーワードは例外処理メカニズムをトリガーします。これは関数ではなく言語構造ですが、値を渡す必要があります。受信オブジェクトが必要です。最も単純なケースでは、組み込みの Exception クラスをインスタンス化できます。
最後に、try コードの後に、少なくとも 1 つの catch コード ブロックを指定する必要があります。複数の catch コード ブロックを try コード ブロックに関連付けることができます。各 catch ブロックが異なる種類の例外をキャッチできる場合は、複数の catch ブロックを使用するのが合理的です。
たとえば、Exception クラスの例外をキャッチする場合です。
- Catch(Exception $e)
- {
- //例外処理
- }
-
コードをコピー Catch コードによってキャプチャされたオブジェクトは、例外を引き起こしたオブジェクトであり、 throw ステートメントに渡されました (throw ステートメントによってスローされました)。 Exception クラスのインスタンスを使用することは良い選択です。
Exception クラスは、次の組み込みメソッドを提供します。
Getcode() - コンストラクターに渡されたコードを返します。
GetMessage() — コンストラクターに渡されたメッセージを返します。
getFile() - 例外コードを生成したファイルへのパスを返します。
getLine() - 例外を生成したコード行を返します。
注:
例外がキャッチされると、try() ブロックの後続のコードは実行を続行せず、一致する「キャッチ」コード ブロックを見つけようとします。
例外がスローされたときにキャッチ処理が実行されない場合は、「キャッチされない例外 'Exception'」エラーが報告されます。
- function test($val){
- if ($val>100){
- throw new Exception("メッセージ: 入力した値が大きすぎます");
- }
- }
- test(111);
- ?>
-
コードをコピー 3. 例外がスローされた場合、catch ステートメント ブロックが処理されるかどうかは別の方法で処理される必要があります。
ユーザー登録機能のコードの一部
-
- try{
- //入力されたフォームをチェック
- if(!filled_out($_POST)){
- throw new Exception('まだフォームに入力していません。戻ってくださいそれを入力してください');
- }
- //メールアドレスが無効であることを確認してください
- if(!check_email($email)){
- throw new Exception('メールの形式が間違っています');
- }
- //確認してください密度の長さが 6 より大きいかどうか
- if(strlen ($passwd<6)){
- throw new Exception('密度の長さは 6 より大きい必要があります');
- }
- //次の 2 つが一致するかどうかを確認しますパスワードが等しい http://bbs.it-home.org
- if($passwd !=$passwd1){
- throw new Exception('2 つのパスワードは異なります。再入力してください');
- }
- //Checkユーザー名の長さが正しいかどうか
- if(strlen($username)>16){
- throw new Exception('ユーザー名の長さが一致しません。再入力してください');
- }
- } catch (Exception $e){
- echo $e->getMessage(); //例外情報を出力する。
- }
- ?>
コードをコピー
|