VB.NET - Tratando exceções de banco de dados com Try/Catch


 

As aplicações que utilizam banco de dados tem que dar uma atenção especial ao tratamento de exceções , primeiro pela própria natureza da operação e de sua importância segundo por que ainda hoje , apesar de todos os esforços dos fabricantes , a interação com banco de dados esta sujeita a falhas.

 

Quando você utiliza o.NET Framework com banco de dados tem a disposição classes que representam exceções que podem ser disparadas quando um programa tenta se comunicar com um banco de dados. Geralmente as falhas ocorrem e são detalhadas quando da utilização dos comandos SELECT, INSERT , UPDATE e DELETE.

 

As duas classes principais são : OleDbException e SqlException que pertencem aos namespaces SqlDb e OleDb. Para obter realizar o tratamento das exceções geradas e obter seus detalhes utilizamos o bloco Try/Catch

 

Para saber mais sobre tratamento de erros leia o artigo : VB .NET - tratamento de erros usando o bloco try-catch-finally.

 

Estas classes retornam uma coleção de erros , e, com isto em mente , você pode expor todos os erros retornados em OleDbException e SqlException percorrendo a coleção de erros.

 

Neste artigo irei tratar somente da classe OleDbException.

 

- A classe OleDbException dispara uma exceção relacionada com o provedor OleDb. (Esta classe não pode ser herdada.).
- A classe é criada sempre que um provedor Ole DB .NET encontra um erro gerado a partir do servidor (os erros do lado do cliente são disparados como exceções padrão URT).
- A classe sempre contém no mínimo uma instância de OleDBError
- Se a gravidade do erro for muito severa o servidor pode fechar a conexão OleDbConnection.

 

Seus principais membros são :

Propriedades públicas

ErrorCode Overridden. Obtém o  HRESULT do erro
Errors Obtém a coleção de um ou mais objetos OleDbError que dão informações detalhadas sobre as exceções geradas pelo provedor.
HelpLink (herdada de Exception) Obtém ou define um link para o arquivo de ajuda associado com a exceção.
InnerException (herdada de Exception) Obtém a instância da exceção que causou a exceção atual.
Message Overridden. Obtém o texto descrevendo o erro.
Source Overridden. Obtém o nome do provedor OLE DB que gerou o erro.
StackTrace (herdada de Exception) Obtém uma string representando da chamada da pilha da exeção disparada.
TargetSite (herdada de Exception) Obtém o método que disparou a exceção atual.

 

Nota: O método ToString cria e retorna  uma representação string da exceção atual

 

Vejamos o código de exemplo abaixo:

 

Imports System.Data.OleDb

Module Module1
    Sub Main()
        ' Cria uma string com instrução SQL
        Dim aQuery As String = "SELECT Nome FROM Clientes"

        ' Estou instanciando uma conexão OleDbConnection INVÁLIDA (adivinha porque ?)
        ' e atribuindo-a a uma variável aConexao
        Dim aConexao As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=")

        Dim aComando As New OleDbCommand(aQuery, aConexao)

        'inicio tratamento de exceções usando try/Catch
        Try
            ' Como temos uma OleDbConnection Inválida
            ' uma exceção será disparada
            aComando.Connection.Open()
        Catch ex As OleDbException

            ' Exibe a mensagem genérica para a exceção
            Console.WriteLine(ex.ToString)
            Console.WriteLine()
            ' Percorre a coleção de erros em OleDbException
            ' retornado pelo banco de dados
            Dim i As Integer
            For i = 0 To ex.Errors.Count - 1

                ' Exibe detalhes sobre os erros
                Console.WriteLine("Message: " & ex.Errors(i).Message)
                Console.WriteLine("NativeError: " & ex.Errors(i).NativeError)
                Console.WriteLine("Source: " + ex.Errors(i).Source)
                Console.WriteLine("SQLState: " + ex.Errors(i).SQLState)
            Next i

            Console.ReadLine()
        End Try
    End Sub
End Module

 

 

Ao executar o código acima iremos obter o seguinte resultado :

 

Até o próximo artigo VB.NET

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti