PHP 7 エラー処理

PHP 7 新機能

PHP 7 は、ほとんどのエラーの報告方法を変更しました。PHP 5 の従来のエラー報告メカニズムとは異なり、現在ほとんどのエラーはError例外としてスローされます。

この Error 例外は、通常の例外と同様に try / catch ブロックで捕捉できます。該当する try / catch ブロックがない場合は、例外処理関数(set_exception_handler() によって登録される)が呼び出されて処理されます。まだ例外処理関数が登録されていない場合は、従来の方法で処理されます。つまり、致命的エラー(Fatal Error)として報告されます。

Error クラスは Exception クラスから拡張されたものではないため、catch (Exception $e) { ... } のようなコードでは Error を捕捉できません。catch (Error $e) { ... } のようなコードを使用するか、例外処理関数(set_exception_handler())を登録することで Error を捕捉できます。

Error 例外階層構造

  • Error
    • ArithmeticError
    • AssertionError
    • DivisionByZeroError
    • ParseError
    • TypeError
  • Exception
    • ...

例

例

<?php
class MathOperations
{
   protected
$n = 10;

  
// 剰余演算、除数が 0 のため、例外をスロー
  
public function doOperation(): string
  
{
      try {
        
$value = $this->n % 0;
         return
$value;
      } catch (
DivisionByZeroError $e) {
         return
$e->getMessage();
      }
   }
}

$mathOperationsObj = new MathOperations();
print(
$mathOperationsObj->doOperation());
?>

上記プログラムの実行結果は以下のとおりです:

Modulo by zero

PHP 7 新機能

その他の拡張機能