Подтвердить что ты не робот

Короткая запись для попытки/улов coffeescript

Я иногда пишу код вроде:

try doSomething()
catch e
  handleError e

что не так, как должен выглядеть красивый и чистый код coffeescript.

Есть ли способ написать:

try doSomething()
catch e handleError e   #<-- will not compile

Это спасло бы мне около 33% строк кода в моих инструкциях try/catch;)

4b9b3361

Ответ 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, конечно.