Короткая запись для попытки/улов coffeescript
Я иногда пишу код вроде:
try doSomething()
catch e
handleError e
что не так, как должен выглядеть красивый и чистый код coffeescript.
Есть ли способ написать:
try doSomething()
catch e handleError e #<-- will not compile
Это спасло бы мне около 33% строк кода в моих инструкциях try/catch;)
Ответы
Ответ 1
Написание try/catch one-liners работает как if-then однострочные или однострочные контуры с использованием ключевого слова then
:
try doSomething()
catch e then handleError e
finally cleanUp()
Вы можете даже иметь его в одной строке, если хотите:
try doSomething() catch e then handleError e finally cleanUp()
Ответ 2
Перекрестная проводка из https://github.com/jashkenas/coffeescript/issues/2413:
FWIW, я обнаружил, что вы можете написать
try
compute something
catch error
handle error
unless error?
handle success
Это возможно, поскольку CS помещает переменную в предложение catch
в окружающий объем, который JS не делает. Можно даже утверждать, что выражение unless error?
более четкое, чем оба else
(это не предложение if
) и continue
(это не цикл) в этой позиции.
Люди, которые настаивают на oneliners, могут даже написать
try compute something catch error then handle error unless error? then handle success
что несколько прохладно и несколько нечитаемо.
Предложение A finally
должно пройти до unless
, конечно.