PHP異常類及び異常処理操作例の詳細

4045 ワード

この例では,PHP異常クラスおよび異常処理動作について述べた.皆さんの参考にしてください.具体的には以下の通りです.
異常処理はエラー処理に分類する、PHPは5.1からである.0からException例外処理クラスが追加されました.
一、異常処理
PHP異常処理はJavaと同様にtry,throw,catch文を用い,異常発生時コードである.異常がキャプチャされておらず、set_exception_handler()を使用して対応する処理が行われていない場合、重大なエラー(致命的なエラー)が発生し、異常がキャプチャされていないというエラーメッセージが出力されます.
1、try:
異常が発生する可能性のあるコードブロックに使用します.
2、throw:
異常を放出するためにtrigger異常をトリガーする方法を指定します.各throwは少なくとも1つのcatchに対応する必要があります.
3、catch:
例外を取得し、例外情報を含むオブジェクトを作成します.
説明:phpの異常はthrowでなければキャプチャできないと一応考えられます.
基本構造:

try{
#some codes
throw new Exception("message"[,code[,...]]);
}
catch(Exception $ex){
#some codes
}


二、PHP異常ベースクラスException
クラスの概要:

Exception {
/*    */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/*    */
public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] )
final public string getMessage ( void )
final public Exception getPrevious ( void )  //           
final public int getCode ( void )
final public string getFile ( void )
final public int getLine ( void )
final public array getTrace ( void )   //        
final public string getTraceAsString ( void )  //             
public string __toString ( void )
final private void __clone ( void )
}


説明:
このベースクラスから分かるように、php異常オブジェクトには、主に異常のテキスト情報(message)、異常コード/コード(code、開発者識別用)、異常発生ファイル(file、すなわち異常発生のphpファイル)、異常発生の具体的な位置(line、異常の行番号を投げ出す)が含まれている.
例:

getFile().",message:" . $e->getMessage().",code:".$e->getCode()."line:".$e->getLine();
}
?>


ブラウザの印刷結果:
Exception:file:D:\studyFolder\wamp\workspace\basicphp\testException.php,message:Some error message,code:30line:3
phpにおけるクラスとオブジェクトの基礎(メソッド呼び出しなど)については、クラスとオブジェクトのセクションを参照してください.
三、カスタム異常クラス
例:

class customException extends Exception
 {
 public function errorMessage()
 {
 //error message
 $errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()
 .': '.$this->getMessage().' is not a valid E-Mail address';
 return $errorMsg;
 }
 }


例外の放出とキャプチャ:

try{
throw new customException("       。");
}
catch(customException $ex){
#some codes
}


四、マルチcatch捕獲異常
1つのtry文で異なる例外が投げ出される可能性がある場合、対応する複数のcatchブロックは、異なるタイプの例外をキャプチャすることができる.Javaのいくつかの注意点と同じです.
1、大異常catchは後ろに置く.異常を投げ出した場合にどのcatchを先に満たすかを順番に判断するため,一度に1つのcatchのみを実行する.
2、tryを1回実行し、最大1つのcatch(異常が発生した場合)を実行します.すなわち、前のcatchが実行を満たすと、後のcatchは考慮されません.(よくある問題)
五、入れ子放出異常
構造例:

try{
 try{
  throw new Exception("     ");
 }
 catch(Exception $e1){
  #    
  throw new Exception("       ");//      
 }
}
catch(Exception $e2){
 #    
}


六、トップレベル異常処理装置の設置set_exception_handler('myException'):関数は、取得されていないすべての例外の処理関数ハンドル(関数名、ここでmyException)を設定します.
例:

Exception: " , $exception->getMessage();
}
set_exception_handler('myException');
throw new Exception('Uncaught Exception occurred');
?>


結果:
Exception:Uncaught Exception occurred
PHPに関する詳細について興味のある読者は、「PHPエラーと異常処理方法の総括」、「php文字列(string)用法の総括」、「PHP配列(Array)操作技術大全」、「PHP基本文法入門教程」、「php対象プログラム設計入門教程」、「php+mysqlデータベース操作入門チュートリアル」および「php一般データベース操作テクニック要約」
ここで述べたことが皆さんのPHPプログラム設計に役立つことを願っています.