Le problème est que vous essayez de vous connecter à la base de données AVANT vous définissez l'attribut silencieux. Ainsi, lors de la tentative de connexion, PDO est toujours libre de crier aussi fort qu'il le souhaite. Vous devez spécifier silencieux dans le cadre de la tentative de connexion elle-même :
$dbh = new PDO($[..snip..], array(PDO::ATTR_PERSISTENT => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT));
^^^^^^^^^^^