1

Я путаюсь с этими двумя терминами. Первоначально я думал, что, когда программа "падает", она автоматически завершает работу и процесс завершается. Но когда программа перестает отвечать на запросы, выдает сообщение об ошибке "Программа не отвечает", а затем запрашивает, что вы хотели бы сделать дальше.

Есть ли термин, который описывает "программа перестает отвечать"? Или этот термин просто слово "крах"? Есть ли разница между ними, сбой и программа перестает отвечать?

1 ответ1

5

Есть.

Программы могут быть написаны с использованием техники, называемой исключениями. Вот упрощенное описание того, как они работают:

  • Идея состоит в том, что вы можете указать части программы, когда она сталкивается с ошибкой или чем-то, с чем она не может справиться, выдать исключение.
  • Другая часть программы была предварительно настроена на перехват исключений - это обработчик исключений.
  • Если ошибка является чем-то, что даже обработчик исключений не может иметь с ней дело, он может сделать одну из двух вещей:
    • Бросьте его в другой обработчик исключений, который может его обработать.
    • Просто выбросьте его "туда" во что угодно - если не существует обработчика исключений, желающего / доступного принять его, операционная система сама перехватывает его, и вы видите диалоговое окно сбоя.

Поэтому, когда программа выходит из строя, она буквально отказывается и прекращает выполнение.

Это отличается, когда программа перестает отвечать на запросы. Программы Windows поддерживают связь с ОС, используя цикл сообщений. Если программа зависает, ожидая ввода-вывода или бесконечного цикла, она прекратит получать сообщения из цикла, и Windows сообщит вам, что программа не отвечает. Одна вещь, которая может привести к неожиданному ожиданию программ при вводе / выводе, - это когда у вас недостаточно ОЗУ, и ОС должна использовать файл подкачки для обработки запросов памяти. Другой может быть, если ваш диск внезапно выйдет из строя и программист никогда не рассматривал возможность того, что запись в файл может быть прервана чем-то вроде этого - или программист сделал что-то вроде «если эта операция не удалась, повторите попытку навсегда».

Так что в этом случае программа все еще работает, она просто больше не общается с Windows.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .