Tratamento de exceções (tratamento de erros)
As exceções podem ser iniciadas por hardware ou software, e podem ocorrer no modo kernel, bem como no código de modo de usuário. O tratamento de exceções estruturadas fornece um único mecanismo para o tratamento de exceções de modo kernel e modo de usuário.
A execução de determinadas sequências de instruções pode resultar em exceções iniciadas pelo hardware. Por exemplo, uma violação de acesso é gerada pelo hardware quando um processo tenta ler ou gravar em um endereço virtual ao qual não tem o acesso apropriado.
Eventos que exigem manipulação de exceção também podem ocorrer durante a execução de uma rotina de software (por exemplo, quando um valor de parâmetro inválido é especificado). Quando isso acontece, um thread pode iniciar uma exceção explicitamente chamando a função RaiseException. Essa função permite que o thread de chamada especifique informações que descrevem a exceção.
Uma exceção pode ser contínua ou não continuável. Uma exceção não continuável surge quando o evento não é contínuo no hardware ou se a continuação não faz sentido. Uma exceção não continuável não encerra o aplicativo. Portanto, um aplicativo pode ser capaz de capturar a exceção e executar. No entanto, uma exceção não continuável normalmente surge como resultado de uma pilha corrompida ou outro problema sério, dificultando a recuperação da exceção.