В вашем примере вам не нужен try
; Вы можете просто сделать
result = (catch code_that_fails()).
Если возникает исключение, catch
возвращает кортеж, содержащий код ошибки и трассировку стека .
Обратите внимание, что это обычно считается плохой практикой, поскольку может маскировать исключения. Подход с использованием стековой трассировки, описанный в другом ответе, почти наверняка вам нужен.
try
является расширением оригинальной функциональности catch
; если вы используете его, вам нужно указать предложения для каждого типа исключения, которое вы хотите перехватить, и обработать их соответствующим образом. Подробности и ясные примеры см. В разделах 6.18 / 6.19 Справочное руководство Erlang .