Depende.
Na maioria das vezes você não quer saber se uma determinada inserção falhou. Mas sim se o seu site está funcionando bem ou não. Então, em geral, seu código deve ser apenas
$stmt = $db_con->prepare(" INSERT INTO mytable ( col ) VALUES ( ? ) ");
$stmt->execute( array('anything') );
echo 'successful';
com tanto else quanto catch sendo inúteis.
No entanto, às vezes você pode querer detectar um certo erro . Neste caso, use catch. Aqui está um código do meu artigo :
try {
$pdo->prepare("INSERT INTO users VALUES (NULL,?,?,?,?)")->execute($data);
} catch (PDOException $e) {
if ($e->getCode() == 1062) {
// Take some action if there is a key constraint violation, i.e. duplicate name
} else {
throw $e;
}
}
aqui você pode pegar um certo erro e tratá-lo.