Pengendalian Ralat PHP 7

PHP 7 mengubah cara kebanyakan ralat dilaporkan. Tidak seperti mekanisme pelaporan ralat tradisional PHP 5, kebanyakan ralat kini dibuang sebagai pengecualian Ralat.

Pengecualian Ralat ini boleh ditangkap dengan cubaan / tangkap blok seperti pengecualian biasa. Jika tiada blok try / catch yang sepadan, fungsi pengendalian pengecualian (didaftarkan oleh set_exception_handler()) dipanggil untuk diproses. Jika pengendali pengecualian belum didaftarkan, ia dikendalikan dengan cara tradisional: ia dilaporkan sebagai Ralat Maut.

Kelas Ralat tidak dilanjutkan daripada kelas Pengecualian, jadi kod seperti tangkapan (Pengecualian $e) { ... } tidak boleh menangkap Ralat. Anda boleh menangkap Ralat menggunakan kod seperti tangkapan (Ralat $e) { ... } atau dengan mendaftarkan pengendali pengecualian (set_exception_handler()).

Hierarki pengecualian ralat

  • Ralat
    • AritmetikError<🎜
    • AssertionError
    • DivisionByZeroError
    • <🎜 ParseError
    • TypeError
  • Exception
    • ...
Contoh
<?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());
?>

Output pelaksanaan program di atas ialah:

Modul dengan sifar