Duvidas Hibernate - Básico

Bem nem sei se essa pergunta é básica ou não , mas ainda assim vou fazer .Depois de muito esforço consegui configurar meu projeto pra usar o hibernate .Porem ontem a noite testando a nova ferramenta que eu possuia ( o hibernate ) , fiquei com algumas duvidas .

1 - Qual a diferença entre saveOrUpdate e merge ?
2 - Como se faz pra captura exceções em hibernate ? ( coisas como registros duplicado , ou erro de acesso ao banco .Eu até sei que o hibernate trata esses erros mas como eu capturo as exceções pra dar o tratamento adequado na view )
3 - Eu sou o tipo de pesso que gosta de quebrar a aplicação ( tentar causar erros ) , e notei que sempre que eu circulava os metodos de operação com o hibernate ( um saveAluno , por ex. ) com uma HibernateException , ou outra exceção qualquer , sempre da erro . Isso é verdade ou imaginação minha ? Se é verdade pq ?

Obrigado .