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

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

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

16 ответов

14 просмотров

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
Условия - это контракт. Скажем, вы пишите функцию ...

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта