Мнения... у вас с раутингом уже беда, так что можно забить и дальше делать как вздумается.
если брать приведенный вами кусок:
file_exist(путь к файлу)
заменить на
if (!class_exists($nameController)) { ...
а пути ресолвить в автолоаде
Вызовы экшена подразумевают то, что у вас в качестве аргументов всегда массив. Массив параметров. Имхо это отстой. Согласитесь, так круче:
function ($id, $page = 1) {
}
// ...
call_user_func_array([$controller, $actionName], $params);
или вообще через рефлексии вызывать, можно тогда еще и порядок аргументов менять и ресолвить по имени.
в остальном норм. Только я бы контроллер называл как ErrorHandlingController или что-то в этом духе и перенаправлял на него любой запрос, который свалился с исключением.