PHP are două sisteme paralele pentru probleme: erorile tradiționale (avertismente, notificări, erori fatale) și excepțiile (bazate pe obiecte, capturabile cu try/catch). PHP modern unifică o mare parte din acestea sub o ierarhie Throwable, iar practica bună favorizează excepțiile.
Niveluri tradiționale de erori
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
