De hecho lo ideal sería lanzar una excepción, o
triggerear un error para capturarlo con un gestor personalizado, andar usando die() es útil al momento de desarrollar pero no cuando estás en producción.
Consulta el manual al respecto del manejo de errores, ahí hay bastantes información de utilidad al respecto.