none
Excepções try catch RRS feed

  • Pergunta

  • Bom dia,

    Tenho o seguinte problema:

    Tenho uma tabela em sql onde a chave primaria é o nº de contribuinte.

    Acontece que trabalho com o c# e queria saber se existe no catch alguma excepção que trate o erro de tentar inserir um novo contribuinte que já exista na base de dados.

    Se houver essa essa possibildade não teria que fazer uma query para verificar se o nº de contribuinte já existe ou não.

    Obrigado,

     

    Elio Godinho

    sexta-feira, 3 de fevereiro de 2012 10:04

Respostas

  • Uma excption especifica também desconheço, você pode fazer o seguinte:

    Catch ex As SqlException
     'catch any errors
          If ex.Number = 2627 Then 'catch error unique index contraint violated
             MessageBox.Show()
          Else
             MessageBox.Show()
          End If
    

    No catch coloque a captura de uma SqlException e teste se o number da exceção é o 2627, referente a violação de chave unica.

    Como o Paulo falou o que normalmente é feito é validar se a informação ja existe no banco, se você sabe que ali pode dar um problema então não espere a exceção ser lançada, faça o teste, acredito ser uma boa prática. :)


    Rodrigo Reis Ferreira
    Microsoft Certified
    sexta-feira, 3 de fevereiro de 2012 11:07

Todas as Respostas

  • Te confesso que não conheço. O que vejo sempre nestes casos é a validação para ver se existe ou não.

    Paulo César Viana
    .NET Developer
    MCC - Microsoft Community Contributor
    MCP - Microsoft Certified Professional
    MCTS - Microsoft Certified Technology Especialist
    --
    Marque as respostas e contribua para uma melhora no fórum.
    sexta-feira, 3 de fevereiro de 2012 10:58
  • Ok, Paulo

    Obrigado.

    sexta-feira, 3 de fevereiro de 2012 11:03
  • Uma excption especifica também desconheço, você pode fazer o seguinte:

    Catch ex As SqlException
     'catch any errors
          If ex.Number = 2627 Then 'catch error unique index contraint violated
             MessageBox.Show()
          Else
             MessageBox.Show()
          End If
    

    No catch coloque a captura de uma SqlException e teste se o number da exceção é o 2627, referente a violação de chave unica.

    Como o Paulo falou o que normalmente é feito é validar se a informação ja existe no banco, se você sabe que ali pode dar um problema então não espere a exceção ser lançada, faça o teste, acredito ser uma boa prática. :)


    Rodrigo Reis Ferreira
    Microsoft Certified
    sexta-feira, 3 de fevereiro de 2012 11:07
  • Ok,

    vou seguir as vossas recomendações e fazer por código controlando antes de chegar a excepção.

     

    Élio

    sexta-feira, 3 de fevereiro de 2012 11:49