Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Podia dar um exemplo de uso da diferença de throw x throw ex?

Podia dar um exemplo de uso da diferença de throw x throw ex, mostrando inclusive os efeitos na stackTrace?

2 respostas
solução!

Olá Angelo, bom dia, tudo bem?

Claro, vou te dar um exemplo de uso da diferença entre throw e throw ex.

Suponha que você esteja desenvolvendo um sistema de cadastro de usuários e, ao tentar salvar um novo usuário no banco de dados, ocorra um erro de conexão com o banco. Nesse caso, você pode capturar a exceção e lançar uma nova exceção personalizada para o usuário final, informando que houve um erro ao salvar o usuário.

Veja o exemplo abaixo:

try
{
    // código para salvar o usuário no banco de dados
}
catch (SqlException ex)
{
    // captura a exceção de conexão com o banco de dados
    throw new Exception("Erro ao salvar o usuário. Tente novamente mais tarde.", ex);
}

No exemplo acima, estamos capturando a exceção SqlException que pode ocorrer ao tentar salvar o usuário no banco de dados. Em seguida, estamos lançando uma nova exceção do tipo Exception, com uma mensagem personalizada para o usuário final e passando a exceção original como parâmetro para o construtor da nova exceção.

Se utilizarmos o throw ex, a stackTrace da exceção original será perdida e a stackTrace da nova exceção será iniciada a partir do ponto onde a nova exceção foi lançada. Já se utilizarmos apenas o throw, a stackTrace da exceção original será mantida e a stackTrace da nova exceção será iniciada a partir do ponto onde a exceção original foi lançada.

Espero ter ajudado e bons estudos!

Andre, vou testar aqui para visuzliar melhor, obrigado pela resposta.