O PHP tem dois sistemas paralelos para problemas: erros tradicionais (avisos, notificações, erros fatais) e exceções (baseadas em objetos, capturáveis com try/catch). O PHP moderno unifica grande parte disso sob uma hierarquia Throwable, e a boa prática favorece exceções.
Níveis de erro tradicionais
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
