Deberías tener display_errors = off
en su PHP.ini de todos modos para evitar este problema. Los errores que revelan detalles como estos provienen de muchos lugares, además de PDO.
Sí, también deberías tenerlo en un bloque try/catch.
También puede $pdo->setAttribute(PDO::ERRMODE_SILENT)
, pero luego debe verificar los códigos de error manualmente en lugar de usar un bloque de prueba/captura. Ver http://php.net/manual/en/pdo.setattribute.php para más constantes de error.