PHP ha due sistemi paralleli per i problemi: gli errori tradizionali (avvisi, notifiche, errori fatali) e le eccezioni (basate su oggetti, catturabili con try/catch). PHP moderno unifica gran parte di questo sotto una gerarchia Throwable, e la buona pratica favorisce le eccezioni.
Livelli di errore tradizionali
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
