170 похожих чатов

Добрый день, может плохо ищу, но не могу разобраться. В

каких случаях конструкция try catch нужна, а в каком assert? Что в одном, что в другом случае можно вызвать событие, только в первом можно продолжить работу, во втором программа падает. Вот только вопрос, зачем нужен тогда второй вариант?

16 ответов

3 просмотра

Assert - если что-то пошло не так - пристрелить к чертям. Try / catch- попытаться как-то обработать

jon-pedro Автор вопроса
🐈
Assert - если что-то пошло не так - пристрелить к ...

А когда нужны такие радикальные меры?

jon pedro
А когда нужны такие радикальные меры?

Когда лень/ бесполезно обрабатывать

🐈
Когда лень/ бесполезно обрабатывать

Неправда. Ассерты для проверки инвариантов, которые не должны быть нарушены ни при каких условиях работы программы. Обычно нарушение ассерта означает невозможность исправления ситуации

Alexander Karaev
Неправда. Ассерты для проверки инвариантов, которы...

В теории да. На практике - за ассерты в либах хочется ругаться.

assert – это про ситуации "да ни при каких внешних или внутренних обстоятельствах такого быть не может", в таких ситуациях обработка ошибок не имеет смысла – вы не можете обработать то, чего, собственно, не может быть assert должен содержать всегда истинное условие в качестве самодокументации

Alexander Karaev
Неправда. Ассерты для проверки инвариантов, которы...

Вот например, здесь точно необходимы ассерты? https://github.com/ttk592/spline/blob/master/src/spline.h

🐈
Вот например, здесь точно необходимы ассерты? htt...

Их пытаются использовать в качестве контрактов, которые ещё не доехали в язык

jon-pedro Автор вопроса
Ofee Oficsu
assert – это про ситуации "да ни при каких внешних...

И как эти условия выбираются? Из балды кидается куча вариантов, авось попадёт?

🐈
Вот например, здесь точно необходимы ассерты? htt...

Ассерты иногда можно заменить на нормальную обработку ошибок, да. Здесь они нужны не везде, но это решение автора определить контракты таким образом

jon pedro
И как эти условия выбираются? Из балды кидается ку...

У вас ещё на этапе написания кода начинают возникать догадки, что в некотором месте кода некоторые условия всегда истинны. Вместо того, чтобы слепо полагаться на такую догадку – задокументируйте её в коде в виде assert. Если догадка верна – для вас ничего не изменится. Если не верна – это предлстережёт вас от незаметных ошибок

jon pedro
И как эти условия выбираются? Из балды кидается ку...

Условия - это контракт. Скажем, вы пишите функцию вычисления квадратного корня. Заявляете, что вычисление допустимо только для положительных.

Anatoly Shirokov
Условия - это контракт. Скажем, вы пишите функцию ...

Чтобы не оставлять в рантайме проверку (например, накладуха на проверку при массовых вычислениях недопустима) вы можете поместить в ассерт

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

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
что насчет пагинга? на осдеве непонятно(
Vi Chapmann 🪙
26
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
26
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
если загрузчик efi? если сама PML4 PDPT PDT PT лежит в неудобном для меня месте?
Vi Chapmann 🪙
8
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Карта сайта