Теперь понятно, почему телевизор показывает на экране "Код ошибки: 0". Он написан на C++))
@普京的手机5 ай бұрын
Тут нет никакой ошибки
@Remington-og3tf Жыл бұрын
Было интересно
@кабанок Жыл бұрын
Заметели, сколько коментов на первом видео, и сколько уже тут?)
@rufus361 Жыл бұрын
13, а на первом 96 😐
@momentbs11 ай бұрын
ну - конкуренты хахаха)
@CorRoSionY9 ай бұрын
все хотят ,четверть пробует , у двадцатой части получается
@woomy_squid3 ай бұрын
В catch обязательно должен быть блок кода?
@animeawp11 ай бұрын
Красавчик
@ASMR_Coding_vs4 ай бұрын
я так и знал что ты по мальчикам
@m9tal288 Жыл бұрын
2:45 Не поставил лайк - ошибка! Не сделал обработчик ошибок - фатальная ошибка!
@kpanat Жыл бұрын
Вобще-то если ничего не делать ошибка не появляется просто результатом будет бескончночть. Что вобще-то правильно. Просто бесконечность это не число но входит тем не менее в тип float. Если бы мы использовали тип int то там все только числа и никаких нечисел или бесконечностей нет... Поэтому при целочисленном делении на ноль вы гарантировано получите необработанное исключение и фатальную ошибку... в отличие от деления типа float. Хотя исключение и не вылетает но результат всё равно неопределённый. А не вылетает оно потому что в настройках проекта по умолчанию отключены исключения с плавающей точкой. Их можно включить и тогда каждый раз при попытке деления на ноль у вас будет вылетать исключение. А так же если у вас появится где-то не число... И вам придётся их все ловить. Ещё есть случай денормализации. Дело в том что все числа с плавающей точкой хранятся в компе согласно формату IEE-754. Там так же описывается формат NAN и INF. И если происходит нарушение этого формата, то возникает как раз исключение денормализации. При отключенных исключениях этот случай сводится к NAN. А при включенных обрабатывается отдельно.
@kookaburru Жыл бұрын
Гоша в catch не std::string, а тип const char * указать надо. Строгая типизация все же.
@SerhiiNikulin-r6n Жыл бұрын
Для типа исключения можно использовать объекты. Если бы он написал throw std::string("Divide"); то конструктором класса string создался бы объект который был бы принят в блоке catch объектом err и код бы работал
@kpanat Жыл бұрын
@@SerhiiNikulin-r6n Это да. Но он написал иначе.
@superlexadnepr Жыл бұрын
Спасибо
@普京的手机5 ай бұрын
1:38 где ошибка-то?
@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. В результате ничего по нормальному не рассказал. Потому что рано об этом ещё рассказывать.Но он даже этого не сказал. И теперь мы не знаем какого типа исключение у нас выкидывается и не можем его поймать. Но он даже этого не сказал. И теперь мы не знаем какого типа исключение у нас выкидывается и не можем его поймать.
@sorakarano953011 ай бұрын
Я тоже удивился, когда он попытался поймать строку с помощью string, а не const char*.
@veljine4851Ай бұрын
Так там не было никакой ошибки. 1 / x при x = 0 будет бесконечность. На ноль можно делить и это можно обьяснить пределами. Когда x приближается к нулю, значение выражения становится огромным по модулю.
@DavidAbdilazizov Жыл бұрын
А зачем ваабше библиотеки с ошибками
@jcdfce2707 Жыл бұрын
В библиотеке нет ошибок, ошибки внешние, а библиотека с помощью исключений говорит о том, какая ошибка, а обработка исключений позволяет эти ошибки корректно исправить и обработать в программе, чтобы не было крашей, сбоев, уязвимостей и нарушений логики работы. Например, библиотека работает с файлом на запись и чтение, соответственно могут быть такие внешние проблемы: файл может быть не найден, файл может существовать, но нет прав на запись, чтение или на выполнение, файл может быть заблокирован другим процессом. При каждом таком нестандартном случае библиотека создает свое исключение, а программист сам решает что делать, например что если пришло исключение, что файл заблокирован другим процессом , то в обработчике просто выдать пользователю сообщение, что файл использует другая программа и попробовать позже запустить программу. А если исключение, что нет прав на запись, то в обработчике можно прописать исправление прав доступа к файлу (если конечно привилегии пользователя и файловая система это позволяют сделать).
@ЯковЛазоренко10 ай бұрын
Это имитация обучения, пустое по содержанию видео, а не нормальные уроки, поэтому и платные курсы могут быть такого сомнительного содержания. Зря потратил время. Дизлайк
@ДмитрийВсемогущий-я2и7 ай бұрын
так и не понял для чего эта шляпа? Зачем так всё жутко усложнять?
@VladlenVO3 ай бұрын
Ну вообще try-catch нужен для того, чтобы программа не крашилась когда возникают разные непредвиденные проблемы, например отключение от сервера или при обращении к несуществующему объекту и.т.п. В видео уроке пример высосан из пальца, да ещё и никакой ошибки при делении на 0.0f не было, там было inf - бесконечность, что вполне корректно при работе с числами с плавающей запятой. При изучении try-catch нужно говорить не об ошибках, а об исключениях, это немного другое, поэтому данный урок из всей серии пока что самый мусорный, не несущий в себе никакой смысловой нагрузки...