Когда приведенный выше код выполняется, программа резко завершается.
- Почему он резко заканчивается?
- Как обрабатывать такое исключение?
Примечание. Это было задано в онлайн-тесте.
Комментарии (4)
Когда throw 32; выполняется, область действия (окружающие фигурные скобки) остается. Следовательно, B obj; уничтожается и throw 42; . Фу. бросал во время метания. Я не уверен, как это точно определяется, но резкое прекращение кажется мне возможным.
StoryTeller — Unslander Monica
Я нашел еще один вопрос/ответ, который может быть дубликатом: SO: создание исключения при создании исключения.
Ответ, содержащий соответствующий текст из стандарта C++: stackoverflow.com/a/739424/434551.
Источник: reddeveloper.ru
Почему программа завершает работу после ввода данных — Pascal ABC
ПОМОГИТЕ ПОЖАЛУЙСТА. когда включаешь эту программу то вводишь исходные данные которые потом должны считаться по формулам написанным в программе, не понимаю почему программа завершается после введения значений
Windows 7 8 10 вылетает программа или сама прекращает работать
Program Kurs_132; Uses crt; Type Mas=array[1..100] of real; Var x,SX,dl:Mas; i,k:integer; l,r1,r2,E,N,dx:real; fu:text; Begin ClrScr; assign(fu,’kurs132.rez’); rewrite(fu); writeln(fu,’ ‘:15,’Исследование удлинения стержня конической формы’); writeln(fu); writeln(‘ ‘:5,’Введите исходные данные’); write(‘Продольная сила N=’); readln(N); write(‘Длина стержня l=’); readln(l); write(‘Модуль продольной упругости E=’); readln(E); write(‘Наименьший радиус r1=’); readln(r1); write(‘Наибольший радиус r2=’); readln(r2); write(‘Количество участков разбиения [0,l] k=’); readln(k); writeln(fu,’ ‘:20,’Исходные данные’); writeln(fu,’ ‘:5,’Продольная сила N=’,N:8:1,’Н’); writeln(fu,’ ‘:5,’Длина стержня l=’,l:8:1,’мм’); writeln(fu,’ ‘:5,’Модуль продольной упругости E=’,E:8:1,’МПа’); writeln(fu,’ ‘:5,’Наименьший радиус r1=’,r1:5:1,’мм’); writeln(fu,’ ‘:5,’Наибольший радиус r2=’,r2:5:1,’мм’); writeln(fu,’ ‘:5,’Количество участков разбиения [0,1] k=’,k:5); dx:=l/k; for i:=1 to k+1 do begin x[i]:=(i-1)*dx; SX[i]:=pi *(r2-((r2-r1)/l)*x[i])*(r2-((r2-r1)/l)*x[i]); end; dl[1]:=0; for i:=2 to k+1 do dl[i]:=dl[i-1]+((N/E)*(dx/2)*((1/SX[i-1])+(1/SX[i]))); writeln(fu,’ ‘:8,’i x,мм dl, мм’); for i:=1 to k+1 do writeln(fu,’ ‘:6,i:3,’ ‘:4,x[i]:6:1,’ ‘:4,dl[i]:9:7); close(fu); Repeat Until Keypressed End.
Код к задаче: «Почему программа завершает работу после ввода данных»
Листинг программы
close(fu); writeln(‘Расчеты произведены. Результаты записаны в файл kurs132.rez. Нажмите любую клавишу’); Repeat Until Keypressed
Источник: studassistent.ru
Почему компьютер или ноутбук не выключается после завершения работы Windows
Как исправить — «Прекращена работа программы» при запуске ИГРЫ
В зависимости от типа диска и количества фоновых служб, время завершения работы Windows может варьироваться от нескольких секунд до минуты или даже больше, но так или иначе операционная система поэтапно завершает все свои процессы, после чего следует выключение компьютера. Но так бывает не всегда. Если на одном из этапов случится ошибка, Windows не сможет корректно завершить свою работу. Следствием ошибки может стать появление так называемого синего экрана смерти или зависание процедуры завершения работы, при этом экран может отключиться или остаться включенным с уведомлением «Завершение работы».
Содержание
- 1 Фоновые процессы
- 2 Оборудование и периферия
- 3 Служебные приложения и драйвера
Причин, способных привести к данной проблеме, не так уже и мало. Это может быть активность какого-нибудь программного обеспечения, в том числе вредоносного, некорректная работа драйверов и периферии, сбои в настройках электропитания, ошибки на жестком диске и в оперативной памяти.
Фоновые процессы
Одной из причин, по которой Windows не может завершить работу, являются фоновые процессы программ, чаще всего сторонних. При этом далеко не всегда удерживающий процесс отображается на экране, как это бывает, к примеру, с процессом Блокнота с несохраненным контентом. Такие процессы могут быть сбойными, поэтому не будет лишним тщательный анализ системных журналов.
Во-первых, это разделы «Система» и «Приложение» встроенной оснастки «Просмотр событий», во-вторых, «Монитор стабильности системы». Открыть последний вы можете командой perfmon /rel в окне быстрого запуска Win + R . Данный журнал отображает сбои в работе системы и программного обеспечения, которые могут указать на источник проблемы некорректного завершения работы компьютера.
Оборудование и периферия
Не менее вероятной причиной неполадки могут быть устройства, чаще всего периферийные, подключенные к компьютеру по USB. В первую очередь это касается ноутбуков, работающих от аккумулятора. Пробуем решить проблему следующим образом:
-
Откройте Диспетчер устройств и разверните ветку «Контроллеры USB»;
Отметьте для себя все устройства, которые имеют в своем названии «Корневой USB-концентратор». Откройте поочередно свойства таких устройств, переключитесь на вкладку «Управление электропитанием» и снимите флажок с пункта «Разрешить отключение этого устройства для экономии энергии»;
Работая с оснасткой, заодно обратите внимание на все прочие устройства, они не должны быть отмечены желтым или красным значком. Желтый значок на устройствах, отмеченных как неопознанные (без названия) означает, что для данного устройства в системе не установлен драйвер. Желтый значок рядом с опознанным устройством станет означать, что данное устройство работает некорректно или отключилось в результате сбоя. Такие устройства могут привести к обозначенной проблеме, впрочем, такой сценарий маловероятен.
Служебные приложения и драйвера
Следующее, что необходимо сделать, это получить список процессов и драйверов, обращающиеся к подсистеме электропитания. Это позволит выявить процессы и драйвера, которые в данный момент времени препятствуют отправке компьютера в сон/гибернацию и, возможно, его выключению.
-
Запустите от имени администратора командную строку и выполните команду
powercfg /requests
Значение для всех компонентов должно быть «Нет». Если в качестве значения какого-то из компонентов указывается процесс или драйвер, смотрите второй скриншот, можно попробовать добавить его в исключения.
powercfg -requestsoverride DRIVER «полное название драйвера» SYSTEM
В качестве дополнительных мер можно предпринять следующие действия:
-
Запустите утилиту msconfig , переключитесь на вкладку «Службы» и отключите все сторонние службы, предварительно установив флажок «Не отображать службы Майкрософт». Если после этого компьютер станет нормально завершать работу, скорее всего, проблему создает какая-то из этих сторонних служб. Найти ее вы можете методом исключения.
Если у вас ноутбук Asus или Dell, зайдите в «Программы и компоненты» и посмотрите, нет ли в списке установленного ПО приложения Intel Rapid Storage Technology. Если есть, удалите его, так как оно может вызывать проблемы с завершением работы.
Зайдите в настройки электропитания и отключите опцию «Быстрый запуск» и посмотрите каков будет результат отключения. Также вы можете пересоздать файл гибернации hiberfil.sys , отключив там же режим гибернации или выполнив в запущенной от имени администратора командной строке powercfg -h off .
Проверьте жесткий диск на предмет логических и физических ошибок командой chkdsk и в случае обнаружения таковых повторите ту же команду с параметрами F и R ( chkdsk /f /r ).
Проверьте на предмет ошибок оперативную память командой mdsched .
По большому счету это всё, что касается рассмотренной нами проблемы. К счастью, сталкиваться с ней приходится нечасто, если же вам всё же пришлось с ней столкнуться, решайте ее как можно скорее, так как постоянное принудительное завершение работы компьютера чревато печальными последствиями для оборудования, в первую очередь для жесткого диска.
Источник: spravkapc.ru