PHPにおけるException異常

2068 ワード

異常の基本使用
例外が投げ出されると、その後のコードは実行されず、PHPは一致する「catch」コードブロックを検索しようとします.異常がキャプチャされず、set_を使用する必要がない場合exception_handler()が対応する処理を行うと、重大なエラー(致命的なエラー)が発生し、「Uncautor Exception」(異常をキャプチャしていない)というエラーメッセージが出力されます.異常を投げ出して捕獲しないようにしましょう.
<?php
//create function with an exception
function checkNum($number)
 {
 if($number>1)
  {
  throw new Exception("Value must be 1 or below");
  }
 return true;
 }

//trigger exception
checkNum(2);
?>

上記のコードでは、このようなエラーが発生します.
PHP Fatal error:  Uncaught exception 'Exception' with message 'Value must be 1 or below' in /home/wangkongming/babytree/test/php/php_ob/3.php:7
Stack trace:
#0 /home/wangkongming/babytree/test/php/php_ob/3.php(12): checkNum(2)
#1 {main}
  thrown in /home/wangkongming/babytree/test/php/php_ob/3.php on line 7

Try,throwとcatch
上記の例で発生したエラーを回避するには、例外を処理するために適切なコードを作成する必要があります.正しいプロセッサは、Try-例外を使用する関数が「try」コードブロック内にあるべきであることを含むべきである.例外がトリガーされていない場合、コードは通常通り実行されます.しかし、異常がトリガーされると、異常が放出されます.Throw-ここでは異常をトリガーする方法を規定します.各throwは、少なくとも1つのcatch-catchコードブロックに対応して例外を取得し、例外情報を含むオブジェクトを作成して例外をトリガーする必要があります.
<?php
//create function with an exception
function checkNum($number)
 {   
 if($number>1)
  {  
      throw new Exception("Value must be 1 or below");
  }  
 return true;
 }   
     
//trigger exception                                                                                                       
try{
    checkNum(2);
    echo "If you see this ,the number is 1 or below";
}catch(Exception $e) {
    echo 'Message: '.$e -> getMessage();
}
?> 

上のコードを実行します.
Message: Value must be 1 or below

例の説明:
上のコードは例外を放出し、checkNum()関数を作成します.数値が1より大きいかどうかを検出します.もしそうであれば、例外が投げ出されます.「try」コードブロックでcheckNum()関数を呼び出します.checkNum()関数の例外は、「catch」コードブロックから投げ出されて受信され、例外情報を含むオブジェクト($e)が作成されます.このexceptionオブジェクトから$e->getMessage()を呼び出すことで、この例外からのエラーメッセージを出力しますが、「throwごとに1つのcatchに対応しなければならない」という原則に従うために、漏れたエラーを処理するために最上位レベルの例外プロセッサを設定できます.