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

複数のcatchブロックを使用したPHP例外処理


はじめに

PHPでは、tryブロックに続く一連のcatchブロックで、さまざまな例外ケースを処理できます。事前定義された例外とエラー、およびユーザー定義の例外を処理するために、さまざまなキャッチブロックを使用できます。

次の例では、catchブロックを使用して、DivisioByZeroError、TypeError、ArgumentCountError、およびInvalidArgumentException条件を処理します。一般的な例外を処理するためのcatchブロックもあります。

<?php
declare(strict_types=1);
function divide(int $a, int $b) : int {
   return $a / $b;
}
$a=10;
$b=0;
try{
   if (!$b) {
      throw new DivisionByZeroError('Division by zero.');}
      if (is_int($a)==FALSE || is_int($b)==FALSE)
         throw new InvalidArgumentException("Invalid type of arguments");
         $result=divide($a, $b);
         echo $result;
      }
      catch (TypeError $x)//if argument types not matching{
         echo $x->getMessage();
   }
   catch (DivisionByZeroError $y) //if denominator is 0{
      echo $y->getMessage();
}
catch (ArgumentCountError $z) //if no.of arguments not equal to 2{
   echo $z->getMessage();
}
catch (InvalidArgumentException $i) //if argument types not matching{
   echo $i->getMessage();
}
catch (Exception $ex) // any uncaught exception{
   echo $ex->getMessage();
}
?>

出力

まず、分母が0なので、ゼロ除算エラーが表示されます

Division by 0

$ b =3に設定すると、除算関数は整数を返すことが期待されますが、除算の結果はfloatになるため、TypeErrorが発生します

Return value of divide() must be of the type integer, float returned

$ res =divide($ a);を変更して、1つの変数だけが除算関数に渡された場合。これにより、ArgumentCountError

が発生します
Too few arguments to function divide(), 1 passed in C:\xampp\php\test1.php on line 13 and exactly 2 expected

引数の1つが整数でない場合は、InvalidArgumentException

の場合です。
Invalid type of arguments

  1. JavaでのTryCatchによる例外処理

    最高のプログラマーでさえ、コードに間違いを犯します。タイプミス、予期しないユーザー入力、または追跡が困難なその他の多くの理由により、エラーが発生する可能性があります。 そこで、例外処理が役立ちます。優れたコードには、事前定義された方法でコードのエラーに応答する例外ハンドラーが含まれています。例外ハンドラは、エラーが発生した場合の応答方法をプログラムに指示するので便利です。 Javaでは、try...catch ブロックは例外処理に使用されます。このチュートリアルでは、例外処理の基本、try...catchの使用方法について説明します。 例外を処理するためのブロック、およびfinal

  2. C++での例外処理の基本

    C ++では、例外処理はランタイムエラーを処理するプロセスです。例外は、C++で実行時にスローされるイベントです。すべての例外は、std::exceptionクラスから派生します。処理可能なランタイムエラーです。例外を処理しない場合は、例外メッセージを出力してプログラムを終了します。 例外は、C ++標準では、プログラム内で使用できるクラスとして定義されています。親子クラス階層の配置を以下に示します。 C++の一般的な例外クラスは次のとおりです。 例外 説明 std ::exception これは、すべての標準C++例外の例外および親クラスです。 std ::