PHP har to parallelle systemer til at håndtere problemer: traditionelle fejl (advarsler, notitser, fatale fejl) og undtagelser (objekt-baserede, kan fanges med try/catch). Moderne PHP samler meget af dette under et Throwable hierarki, og god praksis favoriserer undtagelser.
Traditionelle fejlniveauer
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
