Как скрыть в ошибке PDO вывод данных от базы данных?
Если вы показываете стектрейс пользователю - то это ваша ошибка независимо от того какие данные там видны. Ошибки кода вы должны логировать себе, а пользователю показывать красивую страницу 500.
PDO при подключении даёт не ошибку, а генерирует исключение. Именно для того чтобы его было легко перехватить, как и любое исключение, и обработать.
Ответ выше правильный, но все всегда его понимают неверно.
Под перехватить имеется в виду не "тут же сразу на месте", а "там, где это удобно".
Удобно перехватывать ошибки либо в глобальном try-catch, либо в специализированном Exception handler-e.
Полностью готовое решение:set_exception_handler(function ($e)
{
    error_log($e);
    http_response_code(500);
    if (ini_get('display_errors')) {
        echo $e;
    } else {
        echo "<h1>500 Internal Server Error</h1>
              An internal server error has been occurred.<br>
              Please try again later.";
    }
});
Взято из PHP error reporting 
Плюсы:работает для любых исключений, а не только для соединения PDOкорректно работает в любых окружениях - как боевом, так и тестовомесли надо поменять обработчик (например вывести другой текст/оформление) - это делается в одном месте.
Для того, чтобы стек трейс вообще нигде не светился, даже в логах, можно при коннекте выбросить совсем новое исключение. Как это сделать, можно посмотреть здесь