Изучение C++ для начинающих / #16 - Обработчик исключений (ошибок)

  Рет қаралды 33,734

Школа itProger / Программирование

Школа itProger / Программирование

Күн бұрын

Пікірлер: 26
@enot812
@enot812 Жыл бұрын
Теперь понятно, почему телевизор показывает на экране "Код ошибки: 0". Он написан на C++))
@普京的手机
@普京的手机 5 ай бұрын
Тут нет никакой ошибки
@Remington-og3tf
@Remington-og3tf Жыл бұрын
Было интересно
@кабанок
@кабанок Жыл бұрын
Заметели, сколько коментов на первом видео, и сколько уже тут?)
@rufus361
@rufus361 Жыл бұрын
13, а на первом 96 😐
@momentbs
@momentbs 11 ай бұрын
ну - конкуренты хахаха)
@CorRoSionY
@CorRoSionY 9 ай бұрын
все хотят ,четверть пробует , у двадцатой части получается
@woomy_squid
@woomy_squid 3 ай бұрын
В catch обязательно должен быть блок кода?
@animeawp
@animeawp 11 ай бұрын
Красавчик
@ASMR_Coding_vs
@ASMR_Coding_vs 4 ай бұрын
я так и знал что ты по мальчикам
@m9tal288
@m9tal288 Жыл бұрын
2:45 Не поставил лайк - ошибка! Не сделал обработчик ошибок - фатальная ошибка!
@kpanat
@kpanat Жыл бұрын
Вобще-то если ничего не делать ошибка не появляется просто результатом будет бескончночть. Что вобще-то правильно. Просто бесконечность это не число но входит тем не менее в тип float. Если бы мы использовали тип int то там все только числа и никаких нечисел или бесконечностей нет... Поэтому при целочисленном делении на ноль вы гарантировано получите необработанное исключение и фатальную ошибку... в отличие от деления типа float. Хотя исключение и не вылетает но результат всё равно неопределённый. А не вылетает оно потому что в настройках проекта по умолчанию отключены исключения с плавающей точкой. Их можно включить и тогда каждый раз при попытке деления на ноль у вас будет вылетать исключение. А так же если у вас появится где-то не число... И вам придётся их все ловить. Ещё есть случай денормализации. Дело в том что все числа с плавающей точкой хранятся в компе согласно формату IEE-754. Там так же описывается формат NAN и INF. И если происходит нарушение этого формата, то возникает как раз исключение денормализации. При отключенных исключениях этот случай сводится к NAN. А при включенных обрабатывается отдельно.
@kookaburru
@kookaburru Жыл бұрын
Гоша в catch не std::string, а тип const char * указать надо. Строгая типизация все же.
@SerhiiNikulin-r6n
@SerhiiNikulin-r6n Жыл бұрын
Для типа исключения можно использовать объекты. Если бы он написал throw std::string("Divide"); то конструктором класса string создался бы объект который был бы принят в блоке catch объектом err и код бы работал
@kpanat
@kpanat Жыл бұрын
@@SerhiiNikulin-r6n Это да. Но он написал иначе.
@superlexadnepr
@superlexadnepr Жыл бұрын
Спасибо
@普京的手机
@普京的手机 5 ай бұрын
1:38 где ошибка-то?
@kpanat
@kpanat Жыл бұрын
Вобще-то в 1-м варианте ловится эксепшн типа const char * чем и является строка в двойных кавычках. Но он даже этого не сказал. И теперь мы не знаем какого типа исключение у нас выкидывается и не можем его поймать. Но сравнивать такие строки надо через специальную функцию strcmp которая входит в библитеку Си а не С++. Это к вопросу надо ли учить Си перед С++. Иногда надо. Но можно написать throw string("Devide") и словится как раз исключение типа string. Но по нормальному так никто не делает. Потому что бросают исключение либо типа exception либо наследника от exception. Но ООП он ещё не рассказал. Ну допустим exception. Тогда это будет так: throw exeption("Devide") тогда ловить надо const exeption &_ex И у него в методе what() будет тип string c содержимым "Devide". Или же динамический объект exeption что делается так throw new exeption("Devide") и ловится не константная ссылка на него а указатель на константные объект, т.е. const exeption *_ex это без наследования... А он не рассказав ни ООП ни наследование начал тему exeption. В результате ничего по нормальному не рассказал. Потому что рано об этом ещё рассказывать.Но он даже этого не сказал. И теперь мы не знаем какого типа исключение у нас выкидывается и не можем его поймать. Но он даже этого не сказал. И теперь мы не знаем какого типа исключение у нас выкидывается и не можем его поймать.
@sorakarano9530
@sorakarano9530 11 ай бұрын
Я тоже удивился, когда он попытался поймать строку с помощью string, а не const char*.
@veljine4851
@veljine4851 Ай бұрын
Так там не было никакой ошибки. 1 / x при x = 0 будет бесконечность. На ноль можно делить и это можно обьяснить пределами. Когда x приближается к нулю, значение выражения становится огромным по модулю.
@DavidAbdilazizov
@DavidAbdilazizov Жыл бұрын
А зачем ваабше библиотеки с ошибками
@jcdfce2707
@jcdfce2707 Жыл бұрын
В библиотеке нет ошибок, ошибки внешние, а библиотека с помощью исключений говорит о том, какая ошибка, а обработка исключений позволяет эти ошибки корректно исправить и обработать в программе, чтобы не было крашей, сбоев, уязвимостей и нарушений логики работы. Например, библиотека работает с файлом на запись и чтение, соответственно могут быть такие внешние проблемы: файл может быть не найден, файл может существовать, но нет прав на запись, чтение или на выполнение, файл может быть заблокирован другим процессом. При каждом таком нестандартном случае библиотека создает свое исключение, а программист сам решает что делать, например что если пришло исключение, что файл заблокирован другим процессом , то в обработчике просто выдать пользователю сообщение, что файл использует другая программа и попробовать позже запустить программу. А если исключение, что нет прав на запись, то в обработчике можно прописать исправление прав доступа к файлу (если конечно привилегии пользователя и файловая система это позволяют сделать).
@ЯковЛазоренко
@ЯковЛазоренко 10 ай бұрын
Это имитация обучения, пустое по содержанию видео, а не нормальные уроки, поэтому и платные курсы могут быть такого сомнительного содержания. Зря потратил время. Дизлайк
@ДмитрийВсемогущий-я2и
@ДмитрийВсемогущий-я2и 7 ай бұрын
так и не понял для чего эта шляпа? Зачем так всё жутко усложнять?
@VladlenVO
@VladlenVO 3 ай бұрын
Ну вообще try-catch нужен для того, чтобы программа не крашилась когда возникают разные непредвиденные проблемы, например отключение от сервера или при обращении к несуществующему объекту и.т.п. В видео уроке пример высосан из пальца, да ещё и никакой ошибки при делении на 0.0f не было, там было inf - бесконечность, что вполне корректно при работе с числами с плавающей запятой. При изучении try-catch нужно говорить не об ошибках, а об исключениях, это немного другое, поэтому данный урок из всей серии пока что самый мусорный, не несущий в себе никакой смысловой нагрузки...
@xoxlam_pizda
@xoxlam_pizda 10 ай бұрын
Фига, почему тут так мало коментов?
Изучение C++ для начинающих / #17 - Встроенные функции в C++
10:40
Школа itProger / Программирование
Рет қаралды 32 М.
didn't manage to catch the ball #tiktok
00:19
Анастасия Тарасова
Рет қаралды 34 МЛН
Кәсіпқой бокс | Жәнібек Әлімханұлы - Андрей Михайлович
48:57
How it feels when u walk through first class
00:52
Adam W
Рет қаралды 24 МЛН
Synyptas 4 | Арамызда бір сатқын бар ! | 4 Bolim
17:24
7 Лет Опыта в IT | Что я Понял?
19:56
Vlad Mishustin
Рет қаралды 198 М.
Брутфорс пароля на python
10:31
IT DIGITAL PROGRESS
Рет қаралды 1,5 М.
Что пишут на языке программирования C++?
16:27
Изучение C++ для начинающих / #14 - Структуры данных
12:54
Школа itProger / Программирование
Рет қаралды 49 М.
Собеседование Junior C++
45:32
Ambushed Raccoon
Рет қаралды 119 М.
Python VS С# | Согласен / Не согласен
14:27
Технологии в Контуре
Рет қаралды 50 М.
didn't manage to catch the ball #tiktok
00:19
Анастасия Тарасова
Рет қаралды 34 МЛН