
Виталий
16.03.2018
02:04:37
Ну так проблема в том что кто юзает мой метод и класс об этом не знает и бац - вылет
В джава варнинги - сразу все понятно
Я же сам могу забыть в проекте что метод выдает исключение, а смотреть объявление каждого метода не айс

Bogdan
16.03.2018
02:05:58

Google

Виталий
16.03.2018
02:06:26
Ну так вопрос в другом - как сообщить что теже переданные данные не верные?
когда я сам генерирую исключение

Bogdan
16.03.2018
02:07:09
котлин зам выводит

whalemare
16.03.2018
02:07:24

Bogdan
16.03.2018
02:07:39
https://kotlinlang.org/docs/reference/exceptions.html

Виталий
16.03.2018
02:08:07
Ну если к примеру 50/50 может вернуться ответ или ошибка?

Bogdan
16.03.2018
02:08:21
в документации обычно указывают что метод может кинуть исключения

Виталий
16.03.2018
02:08:28
Читать доки к каждой функции замучаешся, она из названия должна быть понятна

Bogdan
16.03.2018
02:08:49
ну так например метод чтения файла
я понимаю что он может кинуть исключения
метод который дает рандомное число - вероятность близится к 0

Google

Виталий
16.03.2018
02:10:46
Ок, если я явно хочу сообщать что метод может не выполнится, как лучше поступить?
Именно явно, а не по докам
Чтобы самому не забыть и везде явно проверять

Bogdan
16.03.2018
02:11:25
смотри анотации
есть которые в ИДЕ будут кидать варнинг
и человек обычно посмотрит

Виталий
16.03.2018
02:12:24
Вот мне и достаточно хотяб варнингов - типа смотри, ты кажется что-то забыл.
Есть что-то на примете таких аннотаций?

Bogdan
16.03.2018
02:12:57
а что он может забыть?

Виталий
16.03.2018
02:13:19
Я могу забыть что в 50% возвращается исключение
Кода много, все н припомнишь

Bogdan
16.03.2018
02:13:50
ну блин нада смотреть

Виталий
16.03.2018
02:14:02
Вроде обычная функция, что там смотреть

Bogdan
16.03.2018
02:14:03
в котлине тяжело сломать код, в читсом

Виталий
16.03.2018
02:14:17
Но легко словить вылет)

Bogdan
16.03.2018
02:14:36
везде легко
на то ты и программист

Виталий
16.03.2018
02:14:47
Ладно, буду копать в сторону аннотаций

Bogdan
16.03.2018
02:15:06
может ты бы код привел
а то не понятно

Google

Виталий
16.03.2018
02:15:23
В свифте по мне куда лучше решили проблему.
Не надо ловить ошибку - укажи try? перед функцией и все
Она просто нул вернет тогда в случае ошибки
Да пример то простой, например логика: если запрос уже в ожидании ответа от сервера, кинуть исключение что мы дублируем запрос
Это вот первый случай с чем столкнулся когда на котлин переписывал

Bogdan
16.03.2018
02:17:56

Виталий
16.03.2018
02:18:46
Ну да, только незаметишь и не укажешь
Потом раз и как-то вылет
Просто я за однозначность в самом языке, а не чтоб к докам постоянно бегать

Bogdan
16.03.2018
02:19:27
пиши на свифте

Виталий
16.03.2018
02:20:04
Ну так на ios и пишу))) А на андроид java и kotlin

Виталий
16.03.2018
02:21:46
@Throws(NewsRequestException::class)
@JvmOverloads
fun requestList(beginIndexBegin: Int, useCache: Boolean = true) {
…..
if (info.listPageNowLoaded.contains(page))
throw NewsRequestException("Duplicate request", true)
…
}
Тут могу вернуть в ответе функции результат, но вопрос просто общий, как в целом поступать

Bogdan
16.03.2018
02:29:09
может тебе поможет решения кк в корутинах, где возращается обект в котором проперти с результатом и проперти с ошибкой

DY
16.03.2018
02:34:11
как вариант, использовать что-то типа этого (или написать свою реализацию подобного) https://github.com/kittinunf/Result
или если ексепшн вызывающему коду не нужен, можно возвращать null

Виталий
16.03.2018
02:38:51
Ну вот также и думаю. В objc так делал, но когда перешел на свифт в ios понравилась работа с ошибками, ну а в джава всегда вызывал исключения из-за удобства.
Вообще в том свифте сами исключения не перехватываются вообще, просто вылет.
Но для сообщения ошибок используется try catch, который не поддерживает исключения
Видать теперь исключения буду юзать только в крайних случаях
Аннотации это хорошо, но хочется писать код по нормам языка без велосипедов

Google

DY
16.03.2018
02:42:15
аннотации, насколько знаю, просто трансформируются в чекед эксепшн для джавы, из котлина даже ворнингов не будет никаких

Bogdan
16.03.2018
02:42:44

DY
16.03.2018
02:43:34
? не доводилось юзать, только читал где-то, мб тут, в чате. могу и ошибаться

Bogdan
16.03.2018
02:44:24

Admin
ERROR: S client not available

Виталий
16.03.2018
02:50:33
Как вариант в названий методов юзать префикс try, как бы намекая что ответом может быть исключение.
Но всеровно минимизировать исключения в проекте если возможно
Как я наверно и поступлю. :)

Bogdan
16.03.2018
02:52:48

Виталий
16.03.2018
02:55:13
Ну префикс просто говорит что не забудь заюзать try catch
Ведь исключение часть метода, то и упомянуть стоит по мне
Если это реально исключительный случай - то это другая история
Даже можно рядом ложить метод без префикса который просто может вернуть нул взамен ошибки
Еще вопрос про пакеты. На что влияет именование пакетов, только ради совместимости с java или в самом котлине есть применение?
Как понимаю права доступа на пакет нету
Вплане доступ к данным в пределах пакета

Bogdan
16.03.2018
04:47:52

Виталий
16.03.2018
04:49:15
Структуризация да, но вроде можно не привязываться к файловой структуре, через которую и построена вся структура
Вот только иде ругается тогда варнингами)

Google

Виталий
16.03.2018
04:51:08
Тут кстати прикол обнаружил:
в джаве в именах пакетов лучше не юзать большие буквы, юзать прочерки.
В котлине говорит что юзай камелкейз, но если имена директории не менять, то ругается что не совпадает

Bogdan
16.03.2018
04:51:30

Виталий
16.03.2018
04:52:16
Я про структуру через директории
В джаве совпадать с пакетами должно

Bogdan
16.03.2018
04:53:36

Виталий
16.03.2018
04:54:01
Ну он подчеркивает идешкой

Bogdan
16.03.2018
04:54:19
https://kotlinlang.org/docs/reference/coding-conventions.html

Виталий
16.03.2018
04:54:58
Просто выходит что в таких пакетах с _ варнинги будут всегда)
Либо не совпадает с директорией, либо не камелкейс

Тимур
16.03.2018
06:11:33


Виталий
16.03.2018
06:14:01
С другой стороны да) Тут момент какие именно исключение - от системы или определенное с параметрами. Так то откуда угодно прилетает, особенно в андроиде. Но тут вопрос о поддержки специального вида исключений - которые являются частью ответа и говорящие что дальше делать ничего не нужно что связано с результатом ответа
А то что все окутывать - ну это делается где-то в корне вызовов чтобы приложение не легло
А то что к массиву обратился не так - это ошибка разработчика, нужно чтоб вылетало, иначе можно и не заметить логическую ошибку и не исправить ее
Либо как сказал где-то в корне ловить и отправлять на сервак для изучения

Michael
16.03.2018
07:17:45
можно здець иногда спосить вопросы на английском или это запрешено?