segunda-feira, 19 de abril de 2010

Como gerar uma SQLException manualmente ?

Estava eu criando um projeto para testar um CustomTraceListener que grava um log no banco de dados de acordo com o tipo de exceção.
Com isso, precisei criar um método que gerasse uma SQLException.

Não é possível gerar uma SQLException manualmente em C#, pois a classe SQLException não possui um construtor público.

Mas nós podemos gerar esta exceção indiretamente, usando a função RAISEERROR do SQLServer.

Por Exemplo:

try
    { 
        SqlCommand cmd = 
                new SqlCommand("raiserror('Manual SQLException', 16, 1)",objConnection);
        cmd.ExecuteNonQuery();

    }
catch (SqlException sqlEx)
    {
        string msg = sqlEx.Message; //msg = "Manual SQLException"
    }


O código acima irá lançar uma SqlExpcetion mas o problema aqui é que demora um tempo de ida e volta ao banco de dados para executar a função RaiseError, porém, como estou usando somente para testes, o round trip, no meu caso, não é relevante.

Nenhum comentário:

Postar um comentário