@scala_ru

Страница 1453 из 1499
λoλcat
07.05.2018
20:30:55
возможно
Ну вот же

типа https://gist.github.com/Odomontois/a191b302dc931d86ac123327fb3da307

OlegYch
07.05.2018
20:33:21
это чо?

зачем ексепшеном ограничивать?

Google
OlegYch
07.05.2018
20:34:12
алсо ексепшены мутабельные (стектрейс), нельзя их обьектами делать

Alexander
07.05.2018
20:36:50
а что значит делать объектами?

Nick
07.05.2018
20:37:16
а стектрейс не может быть иммутабельным?

насколько я помню, как раз в этом плане исключения иммутабельны)

никто set там особо не вызывает

Alexander
07.05.2018
20:40:18
там array? Разве что теоретически возможно :)

Nick
07.05.2018
20:41:09
там есть setStackTrace

никто не юзает

Alexander
07.05.2018
20:42:24
it's just reflecting the runtime :)

Vadim
07.05.2018
20:42:56
там внутри стэктрейс "ленивый"

Nick
07.05.2018
20:43:40
де дефолту он всегда заполняется

см fillInStackTrace

Google
OlegYch
07.05.2018
20:44:28
ну и будет у тебя один стектрейс у всех ексепшенов

Nick
07.05.2018
20:44:56
не будет

OlegYch
07.05.2018
20:45:22
ну конструктор то один раз у object вызывается

не важно вобщем

Nick
07.05.2018
20:45:42
throw new ...Exception

OlegYch
07.05.2018
20:45:44
это так, на будущее

Nick
07.05.2018
20:45:46
ничего не говорит?

OlegYch
07.05.2018
20:46:03
смотри оригинальную пасту

Nick
07.05.2018
20:46:12
если у тебя будет val exception = new ...Exception, то да будет стектрейс один

Vadim
07.05.2018
20:46:17
см fillInStackTrace
см getOurStackTrace

Nick
07.05.2018
20:46:56
кстати setStackTrace можно переопределить и сделать иммутабельные эксепшены

а getStackTrace всегда возвращает по дефолту clone

Vadim
07.05.2018
20:47:54
хотя я потерял суть - несмотря на мутабельность так-то снаружи оно не особо мешает

Nick
07.05.2018
20:49:28
вообще можно эксепшины делать обьектами

эт такая оптимизация есть даже, если стектреис не нужен)

даже Пангин пару лет назад об этом рассказывал

OlegYch
07.05.2018
20:50:34
нафиг тогда их делать ексепшенами?

OlegYch
07.05.2018
20:51:07
есть такая штука scala.util.control.NoStackTrace

Google
Nick
07.05.2018
20:51:10
это как?
object MyException extends Exception

OlegYch
07.05.2018
20:51:13
полезность сомнительная

Nick
07.05.2018
20:51:22
не сомнительная

как минимум new не делаешь

в джаве такое делают статик переменными

OlegYch
07.05.2018
20:51:51
но вообще делать ексепшен обьектом это признак мамкиного оптимизатора

Vadim
07.05.2018
20:52:02
ну это не про нас - тут никто экзепшены не бросает

OlegYch
07.05.2018
20:52:22
джмх не хочу, стектрейс не хочу, хочу чтобы было збс

Nick
07.05.2018
20:52:35
я случае с кодом Олега

эти adt кидаются в определенных им случаях

и там просто не нужен exception

OlegYch
07.05.2018
20:52:56
да не суть

OlegYch
07.05.2018
20:53:54
@odomontois ты че хотел сказать то етим кодом?

Nick
07.05.2018
20:54:43
делаем ставки, господа, куда его пошлют?)

Oleg
07.05.2018
20:57:25
@odomontois ты че хотел сказать то етим кодом?
я просто спросил "почему не сделать бифунктор ио ньютайпом над обычным ио", меня спросили "типа как?" я накидал "типа так", а потом стартовал парад рассуждений об этом коде и что я им хотел сказать

хотя в действительности я им хотел спросить

λoλcat
07.05.2018
20:57:56
пришли к выводу что ты <плохую вещь> сделал

OlegYch
07.05.2018
20:58:34
а как из него ексепшон то достать?

Oleg
07.05.2018
20:59:04
а как из него ексепшон то достать?
ну в данном примере инстансом еррор монадки

Google
Oleg
07.05.2018
20:59:16
но можно и ОПСов сделать для ньютайпа

вариантов много

OlegYch
07.05.2018
20:59:45
хз в теории наверно возможно

но <: Exception уже грустно

Oleg
07.05.2018
21:00:11
это лишь пример

можно и враппить более общий тип

Admin
ERROR: S client not available

Oleg
07.05.2018
21:01:00
тока не проси меня кот написать

OlegYch
07.05.2018
21:01:06
ensure тогда не будет палить

Oleg
07.05.2018
21:01:55
нет, можно придумать просто SpecialException[T](value: T) extends Exception и всё

OlegYch
07.05.2018
21:02:29
раковато

Oleg
07.05.2018
21:02:57
непонятно почему

OlegYch
07.05.2018
21:04:03
потому что ексепшен должен иметь стектрейс например

Nick
07.05.2018
21:04:14
Кто сказал что должен?

OlegYch
07.05.2018
21:04:41
ваши подвороты с обьектами и ноустектрейсами это нарушение lsp

Vadim
07.05.2018
21:04:51
https://gist.github.com/Odomontois/a191b302dc931d86ac123327fb3da307#file-eio-scala-L29 - я уже говорил что тут номатчэкзепшен ловится?

Oleg
07.05.2018
21:04:54
потому что ексепшен должен иметь стектрейс например
и много у тебя в бифунктор ио стектрейсов?

Google
OlegYch
07.05.2018
21:05:33
liskov

Nick
07.05.2018
21:06:15
liskov
И причём тут это?

И в чем нарушение ?

Oleg
07.05.2018
21:08:35
о каком конкретно субтайпинге ты говоришь?

Nick
07.05.2018
21:10:05
Все так ок

OlegYch
07.05.2018
21:10:18
ексепшен должен вести себя как ексепшен

чо вы так прикипели к ним?

Nick
07.05.2018
21:10:36
Он и ведёт себе как эксепшен

OlegYch
07.05.2018
21:10:39
франкенштейнов делають

Oleg
07.05.2018
21:10:48
ексепшен должен вести себя как ексепшен
это какая-то житейская мудрость?

Nick
07.05.2018
21:10:52
Но экскпшен без стектрейсас

OlegYch
07.05.2018
21:10:59
это lsp

Nick
07.05.2018
21:11:07
Типы совпадают

Что ещё надо

OlegYch
07.05.2018
21:11:15
а поведение - нет

Vadim
07.05.2018
21:11:20
Oleg
07.05.2018
21:11:22
ексепшен должен вести себя как ексепшен
чем этот эксепшон будет отличаться от того, что ты засунешь в raiseError в IO или Task ?

Страница 1453 из 1499