Другие языки программирования и технологии
Исключения C++
В чем преимущество обработки исключений? Ведь можно обойтись if или switch. Или у оброботки исключений есть изюминка которую я не заметил?
Да нет, с помощью IF и SWITCH не всё можно предусмотреть.
Чаще всего исключения возникают при работе с файлами, сетевыми потоками и прочим. Вы должны будете предусмотреть десятки различных ситуаций типа файл не найден или ошибка записи или обрыв связи. В итоге у вас код обычной записи строки текста в файл вырастет до 1000 и более строк. А тут просто try/catch поставил и всё.
Чаще всего исключения возникают при работе с файлами, сетевыми потоками и прочим. Вы должны будете предусмотреть десятки различных ситуаций типа файл не найден или ошибка записи или обрыв связи. В итоге у вас код обычной записи строки текста в файл вырастет до 1000 и более строк. А тут просто try/catch поставил и всё.
try catch значительно облегчают отлов ошибок и проверку.
Никакие if switch и т. д. не заменят, если ещё прибавить и finally, то вообще "сказка". Это лирика. А из плюсов:
Однозначное улучшение читабельности кода - вместо тучи if с проверками на каждом шагу. Раньше я выворчивался спец. функцией самописной и это только отчасти спасало.
Можно передавать исключения из конструкторов - подумайте -как Вы сможете отловить ошибку в чужом конструкторе?
Вы можете получить стек вызовов процедур до того момента, как возникло исключение без особых проблем
Вы можете отлавливать и создавать свои исключения со своими объектами и свойствами, делать переброс исключения через свой обработчик. Для отладки это иногда незаменимо, т. к. можно узнать даже строку если что в которой было исключение.
Никакие if switch и т. д. не заменят, если ещё прибавить и finally, то вообще "сказка". Это лирика. А из плюсов:
Однозначное улучшение читабельности кода - вместо тучи if с проверками на каждом шагу. Раньше я выворчивался спец. функцией самописной и это только отчасти спасало.
Можно передавать исключения из конструкторов - подумайте -как Вы сможете отловить ошибку в чужом конструкторе?
Вы можете получить стек вызовов процедур до того момента, как возникло исключение без особых проблем
Вы можете отлавливать и создавать свои исключения со своими объектами и свойствами, делать переброс исключения через свой обработчик. Для отладки это иногда незаменимо, т. к. можно узнать даже строку если что в которой было исключение.
Я на практике редко их применяю. В С++ можно и без них обойтись, а вот в C# куча исключений уже встроено в язык (например, выход за пределы массива или переполнение) , и поэтому их приходится обрабатывать, иначе выходит ошибка по середине работы программы (не по твоей воле)
Отлов того что пользователь ввел тоже не тривиальная задача, ладно, ещё, когда он должен число ввести, а если что-нибудь не тривиальное.. . Чем писать кучи if, switch проще обработка исключений.
out of memory вы тоже легко обработаете с помощью if на каждом шагу?
Похожие вопросы
- C++ обработка исключений: throw без параметров
- Помогите Задан массив Р(N).Переписать все его элементы,за исключением максимального и минимального в массив D.(язык C++)
- C# Как сформулировать понятие "дробь"(число с количеством после запятой) и добавить его в исключение?
- Учусь програмировать на C++ по книге "C++ для чайников".Проблема.
- Зачем нужен C++, если есть C?
- Помогите срочно C#
- Помогите исправить ошибку в программе (c++).
- Ещё тупой вопрос по C++ :)
- Почему многие отдают предпочтение C++ а не C# ?
- Учу C++! Уже знаю: типы данных, циклы. условия, привидения и т. д учу 5дней. вот программа! Как норм за 5 дней?