Size: a a a

2020 December 03

QH

Quantum Harmonizer in KotlinLangRu
Andrew
И тогда я не совсем понял, куда выбрасывать Exception, если я в Init нахожусь, кто будет ловить его?!
ну вот кто вызывает, тот пусть и ловит)
можешь прикинуться конструктором, создав функцию с таким же именем, но нуллабельным возвращаемым значением
источник

A

Andrew in KotlinLangRu
Ок, спасибо, подумаю
источник

G

German in KotlinLangRu
Andrew
Ок, спасибо, подумаю
не понимаю как проверяемые исключения помогут в init конструкторе. посмотрите Блоха. там правда про джаву, но там много чего применимо к котлину. а если конкретно - то вам нужен раздел про статические фабричные методы,
источник

S

Sergey in KotlinLangRu
Andrew
Коллеги, в секции init я инициализирую переменную, не примитивную, в процессе инициализации возможен Exception. Как я должен проинциализировать эту переменную в блоке catch, если она not null?
Вы в любом случае инициализируете не примитивы))). Если в блоки инит происходит ексепшен то вы получите java.lang.NoClassDefFoundError. в месте инициализации и уже тут мейби что-то делать. Но по хорошему вам надо инектить готовую переменную которая может себя так вести, а не пытаться воссоздать её в инит блоке.
источник

A

Andrew in KotlinLangRu
Сделал переменную класса null и в catch присваиваю null, дальше походу проверяю на null. Стиль Java, но лучше пока не придумали))
источник

S

Sergey in KotlinLangRu
Andrew
Сделал переменную класса null и в catch присваиваю null, дальше походу проверяю на null. Стиль Java, но лучше пока не придумали))
Ну ок))))
источник

BP

Bogdan Panchenko in KotlinLangRu
Andrew
Сделал переменную класса null и в catch присваиваю null, дальше походу проверяю на null. Стиль Java, но лучше пока не придумали))
а потом этот null как-то обрабатывается ?
источник

A

Andrew in KotlinLangRu
Проверяется
источник

S

Sergey in KotlinLangRu
Andrew
Сделал переменную класса null и в catch присваиваю null, дальше походу проверяю на null. Стиль Java, но лучше пока не придумали))
можно было передавать нулл в месте инициализации тогда,
источник

S

Sergey in KotlinLangRu
Ловля ексепшен
источник

A

Andrew in KotlinLangRu
Так и делается, я де написал, в секции catch
источник

S

Sergey in KotlinLangRu
Andrew
Так и делается, я де написал, в секции catch
Я думаю мы просто не поняли друг друга. Вы по-прежнему создаёте сущность в блоке init и там же присваиваете её либо null. Я предлагал по возможности передавать зависимость из вне в конструкторе (если это возможно) освобождая этот класс и блок init от этой конструкции. Солид и все такое)
источник

S

Sergey in KotlinLangRu
Но это моё брюзжание итд)
источник

A

Andrew in KotlinLangRu
В любом случае это где-то должно выполниться))
источник

A

Andrew in KotlinLangRu
Там и сработает эксепшен.
источник

A

Andrew in KotlinLangRu
И это не солид, а DI скорее))
источник

S

Sergey in KotlinLangRu
Andrew
И это не солид, а DI скорее))
Di это скорее один из принципов)
источник

v

vorobyoff in KotlinLangRu
Di - это способ реализации инверсии контроля
источник

S

Sergey in KotlinLangRu
vorobyoff
Di - это способ реализации инверсии контроля
Более корректно конечно. Плохо выражаю мысли)
источник

BP

Bogdan Panchenko in KotlinLangRu
Andrew
В любом случае это где-то должно выполниться))
Идиома котлина - упасть как можно раньше
источник