PHP:llä on kaksi rinnakkaista järjestelmää ongelmille: perinteiset virheet (varoitukset, huomautukset, vakavat virheet) ja poikkeukset (oliopohjaiset, siepattavissa try/catch-konstruktiolla). Moderni PHP yhdistää suuren osan tästä Throwable-hierarkian alle, ja hyvä käytäntö suosii poikkeuksia.
Perinteiset virhetasot
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
