O que exatamente é uma exceção de primeira chance? Como e onde ele se origina em um programa .NET? E por que é chamado por esse nome peculiar (de que 'acaso' estamos falando)?
O que exatamente é uma exceção de primeira chance? Como e onde ele se origina em um programa .NET? E por que é chamado por esse nome peculiar (de que 'acaso' estamos falando)?
Respostas:
É um conceito de depuração. Basicamente, as exceções são lançadas primeiro para o depurador e, em seguida, para o programa real onde, se não for manipulado, será lançado para o depurador uma segunda vez, dando a você a chance de fazer algo com ele em seu IDE antes e depois do próprio aplicativo. Isso parece ser uma invenção do Microsoft Visual Studio.
catch
para isso, o controle vai para lá. Se não houver catch
bloqueio, você obterá a quebra de "segunda chance", desta vez a mensagem é Ocorreu uma exceção não tratada do tipo 'foo' em YourApp.exe . A partir daqui, tentar continuar ou avançar não terá sucesso.
Notificações de exceção de primeira chance são geradas quando uma exceção é lançada. Notificações de segunda chance são quando ele não é detectado. (Chance - como na oportunidade de invadir o código no depurador).
Acabei de começar a usar o depurador e me deparei com isso. Em minha pesquisa, encontrei a postagem no blog do MSDN O que é uma exceção de primeira chance? isso esclareceu tudo para mim.
A grande lição da postagem do blog para mim é que ela se refere à notificação ao depurador, e não a algo que meu código necessariamente precisaria tratar, e o mais importante, "Mensagens de exceção de primeira chance na maioria das vezes não significam que há um problema no código."
Quando um aplicativo está sendo depurado, o depurador é notificado sempre que uma exceção é encontrada. Nesse ponto, o aplicativo é suspenso e o depurador decide como tratar a exceção. A primeira passagem por esse mecanismo é chamada de exceção de "primeira chance".
Dependendo da configuração do depurador, ele retomará o aplicativo e passará a exceção ou deixará o aplicativo suspenso e entrará no modo de depuração. Se o aplicativo manipular a exceção, ele continuará a ser executado normalmente.
Mensagens de exceção de primeira chance geralmente não significam que há um problema no código. Para aplicativos / componentes que tratam exceções normalmente, as mensagens de exceção de primeira chance permitem ao desenvolvedor saber que uma situação excepcional foi encontrada e tratada.
Do ponto de vista do desenvolvedor, é mais uma exceção de segunda chance, porque significaria que não foi tratada no código ; portanto, o aplicativo iria parar.
A primeira chance pode ser muitas delas, mas aquelas com mais preocupações, novamente, de uma perspectiva de desenvolvimento, são a segunda chance, porque isso levaria a um travamento do aplicativo.
finally
execução de qualquer bloco. Uma vez que o sistema decidiu quem irá capturar uma exceção (e determinou que alguém realmente irá), o sistema começará a desfazer a pilha. Observe que se uma exceção for lançada de umfinally
bloco ...