PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPネスト例外


はじめに

try-catchのブロックは、任意のレベルまでネストできます。例外は出現順に逆の順序で処理されます。つまり、最も内側の例外処理が最初に実行されます。

次の例では、inner tryブロックは、2つの変数のいずれかが数値でないかどうかをチェックし、数値でない場合は、ユーザー定義の例外をスローします。アウタートライブロックはDivisionByZeroErrorをスローします 分母が0の場合。それ以外の場合は、2つの数値の除算が表示されます。

<?php
class myException extends Exception{
   function message(){
      return "error : " . $this->getMessage() . " in line no " . $this->getLine();
   }
}
$x=10;
$y=0;
try{
   if (is_numeric($x)==FALSE || is_numeric($y)==FALSE)
      throw new myException("Non numeric data");
}
catch (myException $m){
   echo $m->message();
   return;
}
if ($y==0)
   throw new DivisionByZeroError ("Division by 0");
echo $x/$y;
}
catch (DivisionByZeroError $e){
   echo $e->getMessage() ."in line no " . $e->getLine();
}
?>

出力

次の出力が表示されます

Division by 0 in line no 19

変数のいずれかを数値以外の値に変更します

error : Non numeric data in line no 20

両方の変数が数値の場合、それらの除算が出力されます


  1. PHPのrestore_exception_handler()関数

    restore_exception_handler()関数は、前の例外ハンドラーを復元します。これは、set_exception_handler()を使用して例外ハンドラー関数を変更した後、以前の例外ハンドラー(組み込み関数またはユーザー定義関数である可能性があります)に戻すために使用されます。 構文 restore_exception_handler() パラメータ NA 戻る restore_exception_handler()関数は常にTRUEを返します。 例 以下は例です- <?php    function customException1($

  2. C#での例外

    例外は、プログラムの実行中に発生する問題です。 C#例外は、ゼロ除算の試行など、プログラムの実行中に発生する例外的な状況への応答です。 例外は、プログラムのある部分から別の部分に制御を移す方法を提供します。 C#例外処理は、4つのキーワードに基づいて構築されています- 試してください − tryブロックは、特定の例外がアクティブ化されているコードのブロックを識別します。その後に1つ以上のキャッチブロックが続きます。 キャッチ −プログラムは、問題を処理したいプログラム内の場所で例外ハンドラーを使用して例外をキャッチします。 catchキーワードは、例外のキャッチを示します。