C/C++

С++ Объясните по-простому исключения.

Try, catch и т. д. Как это используется? Блок кода для исключения пишется после основного кода и на него ссылается процессор при исполнении кода и возникновении ошибки или как это работает?
по простому

если разработчик програмист не все предусмотрел в коде
то на отловку исключительных ошибок
можно использовать try
и блок catch

это дает програмисту коректно завершмить работу программы
и вывести сообщение пользователю по надобности
ПТ
Павел Титов
16 208
Лучший ответ
исключения сделаны для того, чтобы иметь возможность при необходимости в любом месте прервать выполнение блока try (в том числе и внутри вызовов подпрограмм) и перейти в блок catch, передав в него какую-то информацию из места прерывания в try
идейно этот механизм используется именно для обработки ошибок, хотя теоретически его можно присобачить и для другой цели

"после" - понятие растяжимое
в машинном коде вряд ли имеет какое-то значение взаимное расположение блоков try catch, просто в коде - да, в большинстве языков и в плюсах в том числе catch идёт после try, потому что так логичнее

"на него ссылается процессор при исполнении кода" - да, процессор всегда в некотором смысле ссылается на код, который им в данный момент выполняется
с механизмом исключений это не связано
Khoshal Hasrat Nazimi
Khoshal Hasrat Nazimi
51 164
В блоке try ты смотришь работает ли часть в которой есть возможность исключения.
trow это текст ответа на исключение типа если x==0 тогда
throw "x не может быть 0"; его записывают в блоке try
Блок catch это блок в котором продолжается программа если найдено исключение.
Есть к примеру у тебя функция Division с двумя аргументами ввиде переменных типа int, и эта функция делит первую переменную на вторую, и вот ты делаешь пользовательский ввод для обоих переменных, и пользователь случайно (или специально, но впрочем неважно) нажимает 0
при попытке поделить на ноль программа аварийно завершиться с кодом DivisionByZero, но если запихнуть саму команду return a / b; в конструкцию try, то программа не завершиться а продолжит свою деятельность с блока catch, к примеру try { return a / b } catch { cout << "Ошибка!" << endl; } выведет в консоль "Ошибка!" и только после этого программа завершиться. Так же можно поймать именно нужное нам исключение, к примеру тот же DivisionByZero, тоесть если пользователь введёт вместо числа строку то программа аварийно завершиться, поскольку в блоке catch мы указали что нам нужно поймать только исключение DivisionByZero, а про неправильный тип ничего мы не говорили. Ещё можно поймать исключения самого типа данных, например int, catch (int), и будут ловиться все исключения этого типа данных (DivisionByZero в том числе). Можно выбросить своё исключение с помощью throw: int i = 10; try { i++; if (i == 11) { throw -1; } } catch (int) { cout << "Variable i equals 11" << endl; } Где throw -1; мы выбрасываем исключение типа int, и в блоке catch мы его ловим
Witalij Kocetkov
Witalij Kocetkov
813
Не знаю что такое catch, но знаю что такое try, крч, если вдруг какой-то урод захочет например поделить на ноль, то ты пишешь конструкцию try и когда будет выходить эта ошибка, ты сможешь например на экран вывести "На ноль делить нельзя"
Salih Akkaya
Salih Akkaya
115
Salih Akkaya Скорее всего я упускаю множество аспектов, но try нужно чтобы обрабатывать исключения
*******талгат Саурыков******* > ты сможешь например на экран вывести "На ноль делить нельзя"

Это надо писать в catch.
try сам по себе не используется. Только вместе с catch или finally

Похожие вопросы