O que acontece no nível do sistema operacional se um software lançar uma exceção?

1

Em linguagens de programação de alto nível (por exemplo, Java), você tem o conceito de exceções.

Essas exceções podem ser implícitas ou explícitas. Depois que uma exceção é lançada, ela pode ser capturada em algum ramo especial de tratamento de erros.

Agora estou pensando: O que acontece lá sob o capô?

O que é uma exceção para o sistema operacional?

Como uma exceção é "capturada"?

    
por mizech 01.08.2016 / 13:08

1 resposta

1

Informações do MSDN: Aqui

Exceções são semelhantes às interrupções tratadas pela CPU. Quando ocorre uma exceção, seja software ou hardware, o processador interromperá a execução e transferirá o controle para o sistema. O sistema salva o estado do encadeamento atual e as informações da exceção. Em seguida, tenta encontrar um manipulador. Isto é essencialmente como é "pego".

A ordem para encontrar um manipulador é:

  • Um depurador anexado ao programa
  • Encontrar um manipulador de exceções baseado em quadros (específico do idioma)
  • Solicite novamente ao depurador
  • Se não estiver sendo depurado, ou se o depurador não lidar com a exceção, o SO fornecerá seu tratamento padrão. Para a maioria das exceções, a ação padrão é chamar ExitProcess.

Se o seu código de modo kernel (sistema operacional), em seguida, ele tenta encontrar um manipulador de exceção. Se não houver uma ou a que estiver disponível não lidar com essa exceção específica, a função ExitWindows será chamada. Brownie aponta se você pode adivinhar o que isso faz.

Em outras palavras, é a sua linguagem de alto nível que lida com exceções, o SO apenas oferece a opção de último recurso.

    
por 01.08.2016 / 13:25