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());
?>
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
その他の拡張機能