Se você quiser exceções, precisará usar o PDO.
no caso de funções pg_* e seu código, você precisa verificar se $result tem o valor false, se tiver, ocorreu um erro.
Você pode obter a descrição do erro com pg_last_error()
Algo assim:
$result = pg_query_params ( $dbconn,
'DELETE FROM questions
WHERE question_id = $1',
array ( $question_id )
);
if ($result === false) {
print pg_last_error($dbconn);
} else {
print 'everything was ok';
}
Então, basicamente, toda vez que você usa uma função pg_*, você precisa verificar se false foi retornado, é assim que acontece com essas funções.
Sim, você pode construir seus próprios wrappers então em vez de pg_query* você chama my_db_query(), que então faz a verificação do valor de retorno e lançamento de exceção.
Ou você pode usar o PDO, que é capaz de lançar PDOException para todos os erros que podem ocorrer.