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: