Scusate ma mi sto proprio innervosendo.
Allora ho esteso la classe pdo riscrivendo il metodo construct.
Questa struttra non permette di sollevare l'eccezzione nel caso ci fosse un errore nella connessione al db.

Mi sono detto bene, che pirla che sono, se gli setto l'attributo dopo aver invocato il costruttore è normale che non avvenga il catch.

ho provato a mettere l'array in questo modo :
parent::__construct($dns, $settings['database']['username'], $settings['database']['password'],array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING))
ma questo non setta correttamente err_mod
Se io faccio un get attribute dopo aver creato l'oggetto mypdo (facendo in modo che la connessione vada a buon fine) il mio err_mode è 0 (cosa che dovrebbe essere due)


Codice PHP:
<?php
class MyPDO extends PDO {
    
    public function 
__construct ($file 'config/my_setting.ini') { 
        try{
                if (!
$settings parse_ini_file($fileTRUE)) throw new exception('Unable to open ' $file '.');
        
             
$dns $settings['database']['driver'] .
                
':host=' $settings['database']['host'] .
                ((!empty(
$settings['database']['port'])) ? (';port=' $settings['database']['port']) : '') .
                
';dbname=' $settings['database']['schema'];
        
                
parent::__construct($dns$settings['database']['username'], $settings['database']['password']);
                
self::setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
                
        }catch(
PDOException $e){
            
//COMPORTAMENTO COMUNE PER 
            
echo 'Connection failed: ' $e->getMessage();
             exit();
        }
    }

?>