AB
case gen_tcp:connect(...) of {error, Reason} -> {stop, Reason} .... end
Size: a a a
AB
AB
AB
AB
exception exit: {econnrefused,[{gen_statem,init_result,6,[{file,"gen_statem.erl"},{line,722}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,249}]}]}
DZ
logger:add_handler
DZ
Reason
можно вернуть {shutdown, Reason}
— OTP тогда не будет генерировать крешрепортВ
DZ
start_link(Name) ->
GSR = gen_server:start_link(?MODULE, [Name], []),
% эта штука нужна, чтобы можно было отдавать ошибки запуска без крешрепотров в логах
case GSR of
{error, {shutdown, Err}} -> {error, Err};
_ -> GSR
end.
init([Name]) ->
case open(Name) of
{ok, ...} -> ...;
{error, Error} -> {stop, {shutdown, Error}}
end.
DZ
В
DZ
В
AB
start_link(Name) ->
GSR = gen_server:start_link(?MODULE, [Name], []),
% эта штука нужна, чтобы можно было отдавать ошибки запуска без крешрепотров в логах
case GSR of
{error, {shutdown, Err}} -> {error, Err};
_ -> GSR
end.
init([Name]) ->
case open(Name) of
{ok, ...} -> ...;
{error, Error} -> {stop, {shutdown, Error}}
end.
AB
VS
supervisor_bridge
DZ
gen_statem:enter_loop
в оригинальный модуль или hibernate
с тем же эффектомDZ
DF
DZ
DF