Обработка неверного аргумента в функции Erlang без использования try-catch - PullRequest
2 голосов
/ 13 марта 2020

Я хочу попытаться обработать неверный аргумент, переданный моей функции без , используя try-catch.

countdown(N) when N > 0 ->
    io:format("~p ~n", [N]),
    countdown(N-1);
countdown(N) when N == 0 ->
    io:format("Zero ~n");
countdown(_N) ->
    stop.

1 Ответ

3 голосов
/ 13 марта 2020

Вы можете использовать Guard по-другому (наряду с функцией is_integer), и, наконец, erlang будет выдавать новое исключение всякий раз, когда в функцию передается неверный аргумент, и вы можете позволить другому процессу выполнить восстановление после ошибки.

countdown(0) ->
    io:format("Zero ~n");
countdown(N) when N > 0 and is_integer(N) ->
    io:format("~p ~n", [N]),
    countdown(N-1);
countdown(N) when is_integer(N) ->
    io:format("negative number ~n").
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...