Size: a a a

2020 June 18

PK

Petr Kozorezov in ErlangRus
Ну дёрнуть можно и erlang:error/1, и erlang:exit/1, и передать в них тэгированный тупо, но это немного не стандартный вариант.
источник

ИИ

Иванов Иванов... in ErlangRus
Elmir
по идее и throw получается можно дернуть и в него передать Args
ты путано объясняешь. я вот так понял, что ты хочешь чтобы в любых исключениях добавился стектрейс с аргументами. если ты сам хочешь выбрасыать исключения, то тогда любой форма и обработчик тоже твой
источник

EK

Evgeny Khramtsov in ErlangRus
Elmir
подскажите плз, можно ли провернуть следующий трюк. дергается функция f1(A,B,C). в процессе ее выполнения вылетает exception. можно ли как то сделать так, чтобы параметры A,B,C попадали в лог эксепшена? или надо самому писать лог механику чтобы параметры логгировать?
erlang:error(badarg, [A, B, C])
источник

EK

Evgeny Khramtsov in ErlangRus
а, если всегда, то не получится, ну макросом только каким-нить
источник

ИИ

Иванов Иванов... in ErlangRus
Evgeny Khramtsov
а, если всегда, то не получится, ну макросом только каким-нить
а что он сделает макросом если исключение выбрасывается в кривом формате и без стектрейса?
источник

EK

Evgeny Khramtsov in ErlangRus
Maksim Lapshin
я никогда даже не читал туда. А куда потом отдаются эти Args?
это тема кстати, например если ты не хочешь какие-то данные (кривые) обрабатывать, то тогда последний clause можно сделать erlang:error(badarg, Args) и будет хорошо и понятно выглядеть в трейсе, в отличие от function_clause
источник

EK

Evgeny Khramtsov in ErlangRus
Иванов Иванов
а что он сделает макросом если исключение выбрасывается в кривом формате и без стектрейса?
хз, ну я предположил
источник

ИИ

Иванов Иванов... in ErlangRus
Evgeny Khramtsov
это тема кстати, например если ты не хочешь какие-то данные (кривые) обрабатывать, то тогда последний clause можно сделать erlang:error(badarg, Args) и будет хорошо и понятно выглядеть в трейсе, в отличие от function_clause
и еще не понятно, он говорит "мне самому  не надо логгировать" - может ему вообще надо чтобы в консоль там выбрасывало всё красиво само
источник

ИИ

Иванов Иванов... in ErlangRus
Evgeny Khramtsov
хз, ну я предположил
ему надо делать свой обработчик catch C:R:Stacktrace, но вроде как 100% гарантйи нет, что там будут атрибуты, а не арность. если надо атрибуты, то свой иксепшен кидать.
источник

ИИ

Иванов Иванов... in ErlangRus
Elmir
erlang:error же это надо самому впиливать в код
 try a+b  catch C:R:S -> logger:error("~p",[{C, R, S}])  end.
источник

ИИ

Иванов Иванов... in ErlangRus
Evgeny Khramtsov
это тема кстати, например если ты не хочешь какие-то данные (кривые) обрабатывать, то тогда последний clause можно сделать erlang:error(badarg, Args) и будет хорошо и понятно выглядеть в трейсе, в отличие от function_clause
в любом случае это будет самый последний уровень, а он как я понимаю, хочет чтобы и промежуточные уровни в стектрейсе содержали аргументы, а не арность..

делать catch + rethrow видимо.. короче гадания на кофейной
источник

E

Elmir in ErlangRus
Иванов Иванов
ты путано объясняешь. я вот так понял, что ты хочешь чтобы в любых исключениях добавился стектрейс с аргументами. если ты сам хочешь выбрасыать исключения, то тогда любой форма и обработчик тоже твой
согласен, может и путано. в общем целевая задача вот -- есть в логах экспешны со стектрейсами, но аргументы конечно там не торчат, как малой кровью сделать чтобы там появились аргументы по возможности без отлова исключений в коде самому. так то конечно впиливать свои исключения решает этот вопрос. (+ система логов и свои трейсов).
источник

E

Elmir in ErlangRus
как бы let it crash - это хорошо, но хочется еще аргументы узнать при креше, причем с минимальными обмазываниями доп обработкой исключений в коде
источник

V

Vasilii Demidenok in ErlangRus
Хм, кто-нибудь помнит на маленьких мапах при апдейте ключей - будет полное реструктурирование объекта, сравнимое с созданием тапла, или хуже?
источник

ИИ

Иванов Иванов... in ErlangRus
Elmir
согласен, может и путано. в общем целевая задача вот -- есть в логах экспешны со стектрейсами, но аргументы конечно там не торчат, как малой кровью сделать чтобы там появились аргументы по возможности без отлова исключений в коде самому. так то конечно впиливать свои исключения решает этот вопрос. (+ система логов и свои трейсов).
смотри дефолтные настройки логгера.  как он выводит необработанные исключения.   что у тебя в трейсе - арность или параметры - ненадежно.  сам обрабатывай исключения и бросай дальше с параметрами
источник

ИИ

Иванов Иванов... in ErlangRus
Vasilii Demidenok
Хм, кто-нибудь помнит на маленьких мапах при апдейте ключей - будет полное реструктурирование объекта, сравнимое с созданием тапла, или хуже?
тут давали ссылку с удобным дизассеблером же намедни
источник

V

Vasilii Demidenok in ErlangRus
обсуждали таплы, а вопрос про мапы (дизассемблер бы про таплы)
источник

ММ

Михаил Малюк... in ErlangRus
Elmir
как бы let it crash - это хорошо, но хочется еще аргументы узнать при креше, причем с минимальными обмазываниями доп обработкой исключений в коде
по идее у тебя должно быть всего несколько мест, где будет _действительно_ интересно узнать параметры вызова, и вот эти места имеет смысл обмазать логгированием и прочими трейсами. а собирать параметры везде сквозняком это такое себе желание - хорошо для разработчика, но хреново в продакшене
источник

E

Elmir in ErlangRus
спасибо, понял.
источник

c

corsars in ErlangRus
Вертолетчик
Это всё равно что книги Садовничего по матанализу. Ни хрена не понятно )))
Вот я читаю по 3 разу - тогда доходит 😉
источник