В вашем коде даже если вы словили исключение - вы его никак не обработали.
Если вы оставите блок catch пустым - результат будет таким же.
Конструкция
$e->getMessage();
Возвращает строку с ошибкой, но вы никуда её не выводите и выполнение скрипта не прерываете.
Протестируйте к примеру
echo $e->getMessage();
И вы увидите текст ошибки