PHP 7 のエラー処理

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

この種の Error 例外は、通常の例外と同様に try / catch ブロックでキャッチできます。一致する try / catch ブロックがない場合は、例外処理関数 (set_Exception_handler() で登録) が呼び出されて処理されます。 例外ハンドラーが登録されていない場合は、従来の方法で処理され、致命的エラーとして報告されます。

Error クラスは Exception クラスから拡張されていないため、catch (Exception $e) { ... } のようなコードでは Error をキャッチできません。 catch (Error $e) { ... } のようなコードを使用するか、例外ハンドラー (set_Exception_handler()) を登録してエラーをキャッチできます。

エラー例外階層

  • Error
    • ArithmeticError
    • AssertionError
    • DivisionByZeroエラー
    • ParseError
    • TypeError
  • Exception
    • ...

1458887252-2773-exception-hiearchy.jpg

インスタンス

<?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 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()); ?>
  • おすすめコース
  • コースウェアのダウンロード
現時点ではコースウェアはダウンロードできません。現在スタッフが整理中です。今後もこのコースにもっと注目してください〜