Olvida CodeIgniter, es mala referencia.
Además el tema de excepciones es altamente controlable, depende como las nombres y verifiques en tu código, te sugiero consultar el manual de PHP al respecto.
Un ejemplo genérico sería así:
Código PHP:
Ver originalnamespace MyApp;
use MyApp\Models\UserModel as Model;
use MyApp\Controllers\AppController as Controller;
class MyController extends Controller {
public function indexAction() {
$data = $this->request->getPost('user-data');
try {
$model = new Model($data);
$model->save();
} catch (\InvalidDataModel $e) {
$this->view->render('user-form', $e->getErrors());
}
}
}
Como sea, el tema es que el modelo por si mismo no sabe validarse, para ello debería usar alguna librería genérica de validación.
Al final es un tema de composición, si lo reflexionas entenderás.