none
Exception RRS feed

  • Pergunta

  • Ola todos.

    Tenho uma aplicação onde tenho uma tabela que é pai de outra tabela quando vou excluir o registro pai me vem uma exception generica, gostaria de saber se tem jeito de interceptar o tipo da excpetion para mostrar ao usuario uma messagem explicativa, pois a que vem é uma coisa de louco. rs

    Grato

    Ulisses
    terça-feira, 29 de abril de 2008 21:54

Todas as Respostas

  • Olá Ulisses,

     

    Geralmente as classes de acesso a dados (ADO.NET) possuem exceções mais específicas (não é preciso trabalhar com a classe Exception diretamente (há o SqlException, OleDbException, etc). No caso do SQL Server, você pode utilizar a instrução RaiseError e lançar exceções mais personalizadas. No SQL Server 2005 contamos ainda com a construção Try Catch que dá ainda mais flexibilidade.

     

    [ ]s,

     

    Gustavo

    quarta-feira, 30 de abril de 2008 12:08
  •  

    Ola..

     

    È que estou usando uma classe generica com Providers, e as exceptions vem parecendo para o usuario final um erro terrivel. Será que tem como tratar isto? Qual o caminho das pedras?

     

    Ulisses

    quarta-feira, 30 de abril de 2008 13:15
  • Olá,

     

    Nesse caso como a classe é genérica, as mensagens terão de ser um pouco mais "genéricas". Se você usa uma classe genérica para acesso a dados imagine que opte pela classes OleDb do ADO.NET. Você pode tentar usar a classe OleDbException que é mais específica que a System.Exception ou Application.Exception mas não sei se ela conseguirá retornar um erro de FK de forma genérica para qualquer provider.

     

    Na documentação dessa classe, há como capturar exceções. Você poderia verificar se uma das propriedades da coleção de erros dessa classe tem algum indicativo de erro de FK. Maiores detalhes consulte

     

    http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbexception.aspx

     

    [ ]s,

     

    Gustavo

    quarta-feira, 30 de abril de 2008 13:51
  • Em seu caso, poderia disparar uma "Exception" diretamente do banco de dados.

    Execute o seguinte comando no banco de dados (MS-SQL 2005)

    EXEC sp_addmessage 50001, 16, 'Mensagem de Erro', NULL, 'FALSE', NULL

    Este comando vai inserir uma nova Mensagem em sys.messages

    Em algum lugar no processo de suas querys, onde deseja disparar a mensagem caso ocorra o erro, use:

    raiseerror(50001, 16, 1)

    Mais detalhes sobre o sys.messages, no link abaixo:
    http://technet.microsoft.com/en-us/library/ms178649.aspx


    Fazendo o procedimento acima, creio que a aplicação vai pegar a mensagem desejada.
    quarta-feira, 30 de abril de 2008 18:05