O que é uma “primeira chance de exceção”?

O que exatamente é uma exceção de primeira chance? Como e onde se origina em um programa .NET? E por que é chamado por esse nome peculiar (do que ‘chance’ estamos falando)?

É um conceito de debugging. Basicamente exceções são lançadas para o depurador primeiro e, em seguida, para o programa real onde, se não for manipulado, é lançado ao depurador uma segunda vez, dando a você a chance de fazer algo com ele em seu IDE antes e depois do próprio aplicativo. Esta parece ser uma invenção do Microsoft Visual Studio.

Notificações de exceção de primeira chance são geradas quando uma exceção é lançada. As notifications de segunda chance são quando não são capturadas. (Chance – como na oportunidade de invadir o código no depurador).

Manipulação de exceção de primeira e segunda chance

Acabei de começar a usar o depurador e corri para isso. Na minha pesquisa, encontrei o post do blog do MSDN O que é uma exceção de primeira chance? isso esclareceu para mim.

As grandes conclusões do post do blog para mim são que se refere a notificação ao depurador, e não algo que meu código precisaria necessariamente manipular, e 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. Neste ponto, o aplicativo é suspenso e o depurador decide como manipular a exceção. A primeira passagem por esse mecanismo é chamada de exceção “primeira chance”.

Dependendo da configuração do depurador, ele continuará o aplicativo e passará a exceção ou deixará o aplicativo suspenso e entrará no modo de debugging. Se o aplicativo manipular a exceção, ele continuará sendo executado normalmente.

Mensagens de exceção de primeira chance na maioria das vezes não significam que há um problema no código. Para aplicativos / componentes que manipulam exceções normalmente, as mensagens de exceção de primeira chance informam ao desenvolvedor que uma situação excepcional foi encontrada e foi tratada.

Do ponto de vista de um desenvolvedor, é mais preocupante uma exceção de segunda chance, porque isso significaria que ela não era tratada no código ; portanto, o aplicativo seria interrompido.

A primeira chance pode ser muitas delas, mas as que se preocupam com mais, novamente, sob uma perspectiva de desenvolvimento, são uma segunda chance, porque levaria a uma falha de aplicativo.