Другие языки программирования и технологии

Исключения C++

В чем преимущество обработки исключений? Ведь можно обойтись if или switch. Или у оброботки исключений есть изюминка которую я не заметил?
Да нет, с помощью IF и SWITCH не всё можно предусмотреть.
Чаще всего исключения возникают при работе с файлами, сетевыми потоками и прочим. Вы должны будете предусмотреть десятки различных ситуаций типа файл не найден или ошибка записи или обрыв связи. В итоге у вас код обычной записи строки текста в файл вырастет до 1000 и более строк. А тут просто try/catch поставил и всё.
Сергей Кудрявцев
Сергей Кудрявцев
77 060
Лучший ответ
try catch значительно облегчают отлов ошибок и проверку.
Никакие if switch и т. д. не заменят, если ещё прибавить и finally, то вообще "сказка". Это лирика. А из плюсов:

Однозначное улучшение читабельности кода - вместо тучи if с проверками на каждом шагу. Раньше я выворчивался спец. функцией самописной и это только отчасти спасало.
Можно передавать исключения из конструкторов - подумайте -как Вы сможете отловить ошибку в чужом конструкторе?
Вы можете получить стек вызовов процедур до того момента, как возникло исключение без особых проблем
Вы можете отлавливать и создавать свои исключения со своими объектами и свойствами, делать переброс исключения через свой обработчик. Для отладки это иногда незаменимо, т. к. можно узнать даже строку если что в которой было исключение.
Павел Отке
Павел Отке
84 764
Я на практике редко их применяю. В С++ можно и без них обойтись, а вот в C# куча исключений уже встроено в язык (например, выход за пределы массива или переполнение) , и поэтому их приходится обрабатывать, иначе выходит ошибка по середине работы программы (не по твоей воле)
Отлов того что пользователь ввел тоже не тривиальная задача, ладно, ещё, когда он должен число ввести, а если что-нибудь не тривиальное.. . Чем писать кучи if, switch проще обработка исключений.
Энсар Хафизов
Энсар Хафизов
1 182
out of memory вы тоже легко обработаете с помощью if на каждом шагу?