Materi
`throw new Exception("pesan")` menghentikan alur normal dan melempar galat ke atas. Bila lemparan terjadi di dalam blok `try`, sisa blok try dilewati dan PHP mencari `catch` yang jenisnya cocok. `$e->getMessage()` membaca pesannya. Blok `finally` dijalankan di akhir, baik ada galat maupun tidak.
PHP punya dua cabang galat yang bisa ditangkap, keduanya turunan `Throwable`. `Exception` dipakai untuk galat yang dilempar program dan pustaka, misalnya `InvalidArgumentException` atau galat PDO. `Error` dipakai untuk galat dari mesin PHP sendiri: `TypeError` saat argumen tidak sesuai tipe parameter, dan `DivisionByZeroError` saat `intdiv` atau `%` membagi dengan nol (sejak PHP 8, `/` dengan nol juga). `catch (Exception $e)` TIDAK menangkap Error. Galat yang tidak tertangkap menghentikan program dengan `Fatal error: Uncaught ...`.
Parameter bertipe `int` menerima string berisi angka seperti "4" dan mengubahnya menjadi 4. String yang bukan angka, seperti "empat", ditolak dengan TypeError.
<?php
try {
echo intdiv(10, 0);
} catch (DivisionByZeroError $e) {
echo "Tidak bisa: " . $e->getMessage();
}Tidak bisa: Division by zero