Size: a a a

2019 May 24

FG

Ferrero Gram in Peer Lab SPB
Сам механизм бросания эксепшна выглядит элегантно в случае с какой-нибудь либой, а вот в своём коде я бы не стал бросать их ИМХО
источник

QH

Quantum Harmonizer in Peer Lab SPB
David
экспеншн это лишь конструкиця языка для обработки исключений, встроенный в язык, придумали чтоб каждый не писал свой велосипед вида Result в лучшем случае, поправьте если ошибаюсь
В Си, после которого сделали исключения, не было возможности сделать нормальный резалт
источник

AV

Artem Viter in Peer Lab SPB
David
экспеншн это лишь конструкиця языка для обработки исключений, встроенный в язык, придумали чтоб каждый не писал свой велосипед вида Result в лучшем случае, поправьте если ошибаюсь
Ну я не уверен что это всегда удачная конструкция для обработки ошибок на стороне клиентского кода. И кажется что result может более удобным и понятным механизмом
источник

D

David in Peer Lab SPB
Artem Viter
Ну я не уверен что это всегда удачная конструкция для обработки ошибок на стороне клиентского кода. И кажется что result может более удобным и понятным механизмом
когда например?
источник

AV

Artem Viter in Peer Lab SPB
David
когда например?
Вот хороший вопрос , я тоже ищу на него ответ :D когда я смотрю на описание метода, который возвращает result , я вижу какие могут быть варианты и точно знаю, что не будет брошено исключение(если это предполагает дизайн). Есть механизмы типа checked exception, которые в сигнатуре метода говорят о том ,что может быть брошено исключение но тогда получается некрасивый код когда, я не хочу его обрабатывать. Если метод бросает исключения но это нигде не задекларированно кроме доки(там тоже может быть что-то не указано) то часто, клиенты использующие этот метод 'забудут' обработать возможные исключения.  И есть ещё один момент - это состояние в котором будет находится объект(приложение) в случае выброса исключения , которое зависит от того как оно обрабатывается и в каком месте , ведь обычно поток исполнения прерывается (может быть куча непредвиденных состояние которые могут повлечь баги). Пока я нашел такме минусы для себя но все равно ещё оч сильно сомневаюсь .
источник

D

David in Peer Lab SPB
Artem Viter
Вот хороший вопрос , я тоже ищу на него ответ :D когда я смотрю на описание метода, который возвращает result , я вижу какие могут быть варианты и точно знаю, что не будет брошено исключение(если это предполагает дизайн). Есть механизмы типа checked exception, которые в сигнатуре метода говорят о том ,что может быть брошено исключение но тогда получается некрасивый код когда, я не хочу его обрабатывать. Если метод бросает исключения но это нигде не задекларированно кроме доки(там тоже может быть что-то не указано) то часто, клиенты использующие этот метод 'забудут' обработать возможные исключения.  И есть ещё один момент - это состояние в котором будет находится объект(приложение) в случае выброса исключения , которое зависит от того как оно обрабатывается и в каком месте , ведь обычно поток исполнения прерывается (может быть куча непредвиденных состояние которые могут повлечь баги). Пока я нашел такме минусы для себя но все равно ещё оч сильно сомневаюсь .
result vs exception чем то напоминает разные подходы к разработке push vs pull
источник

AV

Artem Viter in Peer Lab SPB
Да наверное :) я сначала поспрашивал у знакомых , что они думают (к сожалению все за выброс исключений :( ) сейчас думаю над этим и ищу кейсы т.к. сам не часто сталкиваюсь с написанием кода который может бросать исключения или который должен их обработать . Или может как -то игнорирую этот момент.
источник

D

David in Peer Lab SPB
Artem Viter
Да наверное :) я сначала поспрашивал у знакомых , что они думают (к сожалению все за выброс исключений :( ) сейчас думаю над этим и ищу кейсы т.к. сам не часто сталкиваюсь с написанием кода который может бросать исключения или который должен их обработать . Или может как -то игнорирую этот момент.
посмотри реализацию SwiftyVK
источник

D

David in Peer Lab SPB
там хорошо использованы exception
источник

AV

Artem Viter in Peer Lab SPB
Ок , спасибо :)
источник

SP

Sergey Petrov in Peer Lab SPB
ну типа эксепшен это на случай когда что-то идет не так, result когда можно ожидать что не получится
типа допустим бд, метод get_by_key, если ключа не нашло то вернул result с тем что он не найден
а допустим метод write и если внутри него fsync упал то выбрасываем эксепшен, потому что все плохо и надо падать
источник

AV

Artem Viter in Peer Lab SPB
Да есть и такие мысли
источник

D

David in Peer Lab SPB
Sergey Petrov
ну типа эксепшен это на случай когда что-то идет не так, result когда можно ожидать что не получится
типа допустим бд, метод get_by_key, если ключа не нашло то вернул result с тем что он не найден
а допустим метод write и если внутри него fsync упал то выбрасываем эксепшен, потому что все плохо и надо падать
В обоих кейсах можно заюзать оба варианта, вопрос в другом push или pull?)
источник

AC

Alexander Chernyi in Peer Lab SPB
Вы все обсуждаете-обсуждаете. Но ведь в свифте нет исключений)
источник

M

Maxim in Peer Lab SPB
fatalError() %)
Ну а вообще try, catch, throw же
источник

AC

Alexander Chernyi in Peer Lab SPB
И что?
источник

AC

Alexander Chernyi in Peer Lab SPB
Кидаются-то ошибки, а не исключения. Из-за неправильного понимания потом все удивляются, что ставят Exception breakpoint и у них ничего не работает
источник

M

Maxim in Peer Lab SPB
Ну, и никто же не запрещает юзать NSException, если это нужно
источник

AC

Alexander Chernyi in Peer Lab SPB
Swift не умеет в NSException
источник

AV

Artem Viter in Peer Lab SPB
Я говорил не конкретно про swift в принципе о подходе )
источник