PHP Error Handling Logging Try Catch Throwable PSR3 Monolog
Definisi
PHP 7+统一 error sebagai Throwable (interface untuk Exception & Error). try/catch menangkap, finally untuk cleanup. PSR-3 adalah standar log (emergency…debug) yang diimplementasikan monolog.
Kapan dipakai
Pakai try/catch di batas sistem (controller, command) untuk konversi error jadi respon ramah. Pakai logger (bukan echo/var_dump) untuk audit & debug produksi.
Cara kerja
Catch Throwable
try {
$user = $repo->find($id);
} catch (NotFoundException $e) {
http_response_code(404);
echo json_encode(['error' => 'not found']);
} catch (Throwable $e) {
error_log($e->getMessage());
http_response_code(500);
}PSR-3 / Monolog
$log = new Logger('app');
$log->pushHandler(new StreamHandler('php://stderr'));
$log->error('Gagal simpan', ['id' => $id]);Struktur alur
Loading diagram...
Catatan implementasi
- Tangkap tipe spesifik dulu,
Throwableterakhir (urutan matter). - Jangan catch lalu diam (
catch {}kosong) — setidaknya log. - PSR-3 context array membantu structured log (JSON).
- Di framework (Laravel), exception handler pusat lebih baik daripada try/catch di mana-mana.
Kesalahan umum
- Catch Exception saja:
Error(fatal seperti TypeError) lolos di PHP 7+. - Log sensitif: jangan tulis password/token ke log plaintext.
- var_dump di produksi: gunakan logger + level.
- Swallow error: catch tanpa tindakan menyembunyikan bug.