PHP ma dwa równoległy systemy obsługi problemów: tradycyjne błędy (ostrzeżenia, powiadomienia, błędy fatalne) i wyjątki (oparte na obiektach, przechwytywalne za pomocą try/catch). Nowoczesny PHP ujednolica wiele z tego w hierarchii Throwable, a dobra praktyka faworyzuje wyjątki.
Tradycyjne poziomy błędów
E_NOTICE → minor issues (e.g. using an undefined variable) — script continues
E_WARNING → non-fatal problems (e.g. include of a missing file) — continues
E_ERROR / Fatal → serious errors (e.g. calling an undefined function) — script HALTS
E_DEPRECATED → use of deprecated features
