Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você 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 do computador 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 do computador do thread no qual a exceção ocorreu é salvo em uma estruturaCONTEXT de. 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 de EXCEPTION_RECORD. Como armazena as informações dependentes do computador do registro de contexto separadamente das informações independentes do computador 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 de exceção estão disponíveis por meio da função GetExceptionInformation e podem ser disponibilizadas para todos os manipuladores de exceção executados como resultado da exceção. O registro de exceção inclui as informações a seguir.
- 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 incontinuá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 do modo de usuário, o sistema usa a seguinte ordem de pesquisa para localizar um manipulador de exceção:
- Se o processo estiver sendo depurado, o sistema notificará o depurador. Para obter mais informações, consulte de Tratamento de Exceções do Depurador.
- 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 ocorreu a exceção. 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 quadros puder ser encontrado ou nenhum manipulador baseado em quadros 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á o tratamento padrão com base no tipo de exceção. Para a maioria das exceções, a ação padrão é chamar a função ExitProcess.
Quando ocorre uma exceção no código do modo kernel, o sistema pesquisa os quadros de pilha da pilha de kernel na tentativa de localizar um manipulador de exceção. 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.