в чём прикол на каждый чих проверять isNil (?, ещё как-то), а потом ещё и в ручную разворачивать стек? Это-же небезопасно абсолютно
Всм
впрм.
Очевидное поведение. Я конечно очень не люблю Go за многое и даже за проверку ошибок через nil. Но, это правда удобно в некоторых приложения. Например CLI. У нас максимум 10-15 ошибок на весь код, допустим. Но их легко заметить, обработать. У Rust еще все интереснее с оператором ? И с ним он намного лучше Go. Но вся соль начинается когда нам нужны Custom Error. Зачастую приложению нужно иметь полностью свои уникальные ошибки, с уникальной метадатой. Возьму тут пример Nim. А как сделать свои ошибки для парсинга текста? Конечно есть Try /Catch / Option / и.т.д. Raise, коды ошибок. Лично для моего приложения. Это все, перебор или не добор или не удобно. +(я не все это хорошо знаю и понимаю). А если человек не знакомый с ним захочет понять мой код. Да это упароться можно. Для меня даже подход Rust с Result часто не удобен. Потому что .. ? хоть и помогает. Но тут у меня ошибка стринг, тут стринг + метадата. В итоге я все равно делаю на половину гошный подход. Где ошибка это интерфейс. Но плюсы очевидных ошибок, это лучшее что есть. Каждую ошибку надо обрабатывать. Если программист дурак, он и с исключениями все сломает (такое я видел чаще). Когда то были только коды ошибок. Так было надо. 1. Память. 2. Инт проще всего передавать. 3. не было интернета и у тебя был справочник. Со всеми кодами. Теперь, все иначе. Исключения придумывали не для обработок ошибок, а для исключений. Когда ты не можешь знать будущего. Например мы можем не загрузить файл или загрузить. Окей. Можно обработать. А вот выход за границу массива. Тяжело обработать в целом. (условно). Или другой сбой на уровне железа, памяти и.т.д. Вот тут нужны исключения, но как их начали делать...как их стали применять. Это не всегда к месту. Более того, зачастую этого и не надо. Когда я работаю с го, я кайфую от обработки ошибок. Потому что все едино и однообразно. Хотя не хватает синтаксического сахара. С Раст я еще кое как , нормально в общем. Но 10 вариантов ошибок, конечно бесит. С ним, я хз как это красиво сделаю. Наверну свое :DDDD
> А как сделать свои ошибки для парсинга текста? type MyError* = object of CatchableError
Ага, а толку то? Обрабатывать то я их должен в стиле Ним. Try / Catch и.т.д. Но мне не нужен Try / Catch. Мне нужно или паниковать или сказать что он дурак. И почему он дурак. Сказать я это могу 1000 и 1 способом. Выходит мне нужен только Catch.
> Мне нужно или паниковать или сказать что он дурак. Тогда просто НЕ ЛОВИ, программа упадет и выведет сообщение об ошибке
Обсуждают сегодня