Compartilhar via


IDebugStackFrame3::InterceptCurrentException

Chamado pelo depurador no quadro de pilha atual quando ele deseja interceptar a exceção atual.

Sintaxe

int InterceptCurrentException(
   uint dwFlags,
   out  ulong pqwCookie
);

Parâmetros

dwFlags
[em] Especifica ações diferentes. Atualmente, apenas o valor IEA_INTERCEPT INTERCEPT_EXCEPTION_ACTION é suportado e deve ser especificado.

pqwCookie
[saiu] Valor exclusivo que identifica uma exceção específica.

Valor de retorno

Se for bem-sucedido, retorna S_OK; caso contrário, retornará um código de erro.

A seguir estão os retornos de erro mais comuns.

Erro Descrição
E_EXCEPTION_CANNOT_BE_INTERCEPTED A exceção atual não pode ser interceptada.
E_EXCEPTION_CANNOT_UNWIND_ABOVE_CALLBACK O quadro de execução atual ainda não foi pesquisado por um manipulador.
E_INTERCEPT_CURRENT_EXCEPTION_NOT_SUPPORTED Este método não é suportado para este quadro.

Comentários

Quando uma exceção é lançada, o depurador ganha controle do tempo de execução em pontos-chave durante o processo de manipulação de exceções. Durante esses momentos-chave, o depurador pode perguntar ao quadro de pilha atual se o quadro deseja interceptar a exceção. Dessa forma, uma exceção interceptada é essencialmente um manipulador de exceção em tempo real para um quadro de pilha, mesmo que esse quadro de pilha não tenha um manipulador de exceção (por exemplo, um bloco try/catch no código do programa).

Quando o depurador deseja saber se a exceção deve ser interceptada, ele chama esse método no objeto de quadro de pilha atual. Esse método é responsável por lidar com todos os detalhes da exceção. Se a interface IDebugStackFrame3 não for implementada ou o método retornar qualquer erro, o InterceptStackException depurador continuará processando a exceção normalmente.

Observação

As exceções podem ser interceptadas somente em código gerenciado, ou seja, quando o programa que está sendo depurado está sendo executado sob o tempo de execução do .NET. É claro que implementadores de linguagem de terceiros podem implementar InterceptStackException em seus próprios mecanismos de depuração, se assim desejarem.

Depois que a interceptação for concluída, um IDebugInterceptExceptionCompleteEvent2 será sinalizado.

Confira também