Прерывания и исключения - PullRequest
       221

Прерывания и исключения

20 голосов
/ 24 сентября 2008

Я видел здесь несколько вопросов о исключениях , и некоторые из них намекают на прерывания как исключения , но ни один из них не проясняет соединение.

  • Что такое прерывание?

  • Что является исключением? (пожалуйста, объясните, какие исключения существуют для каждого языка, который вы знаете, поскольку есть некоторые различия)

  • Когда исключение является прерыванием и наоборот?

Ответы [ 11 ]

2 голосов
/ 24 сентября 2008

Когда вы говорите о прерываниях и исключениях, вы обычно говорите близко к аппаратному коду, а прерывания и исключения часто реализуются частично аппаратно, а частично программно.

Прерывание - это аппаратное событие (или запускаемое вручную в сборке), которое связано с вектором обработчиков, которые можно использовать для обработки события прерывания, будь то IO Completion, IO Error (Ошибка памяти диска), IO Event (Например, движение мышью). Прерывания могут часто вызывать исключения, когда происходит какое-то неожиданное прерывание.

Исключением является непредвиденное поведение, чаще всего при использовании аппаратного обеспечения, которое происходит от прерывания и обрабатывается отдельно в программном обеспечении с использованием обработчика прерываний. Языки программирования, какими мы их видим, почти всегда маскируют это под какую-то управляющую структуру.

...