Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Quando ocorre uma exceção de hardware ou software, o processador interrompe a execução no ponto em que a exceção ocorreu e transfere o controle para o sistema. Primeiro, o sistema salva o estado da máquina do thread atual e as informações que descrevem a exceção. Em seguida, o sistema tenta encontrar um manipulador de exceção para lidar com a exceção.
O estado da máquina do thread no qual a exceção ocorreu é salvo em um CONTEXT estrutura. Essas informações (chamadas de registro de contexto ) permitem que o sistema continue a execução no ponto da exceção se a exceção for tratada com êxito. A descrição da exceção (chamada de registro de exceção ) é salva em uma estrutura EXCEPTION_RECORD. Como armazena as informações dependentes da máquina do registro de contexto separadamente das informações independentes da máquina do registro de exceção, o mecanismo de tratamento de exceções é portátil para diferentes plataformas.
As informações nos registros de contexto e exceção estão disponíveis por meio da funçãoGetExceptionInformatione podem ser disponibilizadas para qualquer manipulador de exceção que seja executado como resultado da exceção. O registro de exceção inclui as seguintes informações.
- Um código de exceção que identifica o tipo de exceção.
- Sinalizadores que indicam se a exceção é contínua. Qualquer tentativa de continuar a execução após uma exceção não continuável gera outra exceção.
- Um ponteiro para outro registro de exceção. Isso facilita a criação de uma lista vinculada de exceções se ocorrerem exceções aninhadas.
- O endereço no qual a exceção ocorreu.
- Uma matriz de argumentos que fornecem informações adicionais sobre a exceção.
Quando ocorre uma exceção no código de modo de usuário, o sistema usa a seguinte ordem de pesquisa para localizar um manipulador de exceções:
- Se o processo estiver sendo depurado, o sistema notificará o depurador. Para obter mais informações, consulte Debugger Exception Handling.
- Se o processo não estiver sendo depurado ou se o depurador associado não manipular a exceção, o sistema tentará localizar um manipulador de exceção baseado em quadro pesquisando os quadros de pilha do thread no qual a exceção ocorreu. O sistema pesquisa primeiro o quadro de pilha atual e, em seguida, pesquisa os quadros de pilha anteriores em ordem inversa.
- Se nenhum manipulador baseado em quadro puder ser encontrado, ou nenhum manipulador baseado em quadro manipular a exceção, mas o processo estiver sendo depurado, o sistema notificará o depurador uma segunda vez.
- Se o processo não estiver sendo depurado ou se o depurador associado não manipular a exceção, o sistema fornecerá tratamento padrão com base no tipo de exceção. Para a maioria das exceções, a ação padrão é chamar a funçãoExitProcess.
Quando ocorre uma exceção no código do modo kernel, o sistema pesquisa os quadros de pilha da pilha do kernel na tentativa de localizar um manipulador de exceções. Se um manipulador não puder ser localizado ou nenhum manipulador manipular a exceção, o sistema será desligado como se a função ExitWindows tivesse sido chamada.