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


本論文の実例はPHP異常類と異常処理操作について述べる。皆さんに参考にしてあげます。具体的には以下の通りです。
異常処理はエラー処理に分類され、PHPは5.1.0からException異常処理クラスを追加しました。
一、異常処置
PHP異常処理はJavaと似ています。try、throw、catch文を使って、異常時コードが発生します。異常が捕獲されず、set_exception_handler()を用いて対応する処理が行われない場合、重大なエラー(致命的エラー)が発生し、「Uncaght Exception」(捕獲異常なし)のエラーメッセージが出力される。
1、try:
異常が発生する可能性のあるコードブロックに使用します。
2、throw:
異常を出すためにどのようにトリガするかを規定します。各throwは少なくとも一つの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異常オブジェクトは主に異常なテキスト情報、異常コード/コード(code)、異常発生のファイル(file,すなわち異常なphpファイル)、異常発生の具体的な位置(line,異常な行番号)を含んでいることが分かります。
例:

<?php
try {
 throw new Exception("Some error message", 30);//    ,       30
} catch(Exception $e) {
 echo "Exception:file:".$e->getFile().",message:" . $e->getMessage().",code:".$e->getCode()."line:".$e->getLine();
}
?>

ブラウザの印刷結果:
Exception:file:D:\studyFolder\wamp\workspace\baicphp\testException.php,message:Some error message,code:30 line:3
phpのクラスとオブジェクトの基本(例えば、メソッド呼び出し)については、カテゴリとオブジェクトの小節を具体的に見る。
三、カスタム異常類
例:

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

この異常を投げて捕獲する:

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

四、多catch捕獲異常
一つのtry文では、異なる種類の異常が投げられる可能性がある場合、対応する複数のcatchブロックは、異なるタイプの異常を捕捉することができる。javaの中のいくつかの注意点:
1、大きな異常なcatchは後ろに置いてください。どのcatchを満足するかを順番に判断するので、一回に一つのcatchしか実行しません。
2、一回tryを実行して、一つのcatch(異常が発生した場合)を最大で実行します。つまり、前のどのcatchが実行を満たしているかは、後のcatchは考えられません。よくある試験問題
五、ネスト投げ異常
構造例:

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

六、トップレベル異常プロセッサの設定set_exception_handler('myException'):関数は、キャプチャされていないすべての異常な処理関数ハンドル(関数名、ここではmyException)を設定します。
例:

<?php
function myException($exception)
{
echo "<b>Exception:</b> " , $exception->getMessage();
}
set_exception_handler('myException');
throw new Exception('Uncaught Exception occurred');
?>

結果:
Exception:Unicaght Exception occurred
PHPについてもっと興味のある読者は、本駅のテーマを見てもいいです。「PHPエラーと異常処理方法のまとめ」、「php文字列(string)使い方のまとめ」、「PHP配列(Aray)操作テクニック大全」、「PHP基本文法入門教程」、「php対象プログラム設計入門教程」、「php+mysqlデータベース操作入門教程」および「phpよくあるデータベースの操作技巧のまとめ
本論文で述べたように、皆さんのPHPプログラムの設計に役に立ちますように。