syntax - convertir - Breve notación para coffeescript try/catch
js to coff (2)
A veces escribo código como:
try doSomething()
catch e
handleError e
que no es lo que debería ser el código de coffeescript agradable y limpio.
¿Hay alguna manera de escribir?
try doSomething()
catch e handleError e #<-- will not compile
Esto me ahorraría aproximadamente el 33% de las líneas de código en mis declaraciones try / catch;)
Escribir try / catch one-liners funciona como if-then one-liners o loop one-liners usando la palabra clave then
:
try doSomething()
catch e then handleError e
finally cleanUp()
Incluso puede tenerlo en una sola línea si lo desea:
try doSomething() catch e then handleError e finally cleanUp()
Publicación cruzada desde https://github.com/jashkenas/coffeescript/issues/2413 :
FWIW, descubrí que puedes escribir
try
compute something
catch error
handle error
unless error?
handle success
Esto es posible ya que CS pone la variable de la cláusula catch
en el ámbito circundante, lo que JS no hace. Uno incluso podría argumentar eso diciendo a unless error?
que unless error?
es más claro que los else
(esto no es una cláusula if
) y continue
(esto no es un bucle) en esa posición.
Las personas que insisten en que los oneliner pueden incluso escribir
try compute something catch error then handle error unless error? then handle success
que es algo genial y algo ilegible.
Una cláusula final tendría que ir antes que la unless
, por supuesto.