web-dev-qa-db-fra.com

Notation courte pour coffeescript try/catch

J'écris parfois du code comme:

try doSomething()
catch e
  handleError e

ce qui n’est pas ce à quoi devrait ressembler le code Nice et Clean de Coffeescript.

Y a-t-il un moyen d'écrire:

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

Cela me permettrait d'économiser environ 33% des lignes de code dans mes instructions try/catch;)

21
Juve

L'écriture try/catch one-liners fonctionne comme un one-liners if-then ou un one-liners en boucle avec le mot clé then:

try doSomething()
catch e then handleError e
finally cleanUp()

Vous pouvez même l'avoir sur une seule ligne si vous aimez:

try doSomething() catch e then handleError e finally cleanUp()
41
Juve

Affichage croisé de https://github.com/jashkenas/coffeescript/issues/2413 :

FWIW, j'ai découvert que tu pouvais écrire 

try
   compute something
catch error
    handle error 
unless error?
    handle success

Cela est possible car CS place la variable de la clause catch dans la portée environnante, ce que JS ne fait pas. On pourrait même avancer que dire que unless error? est plus clair que else (ce n'est pas une clause if) et continue (ce n'est pas une boucle) à cette position. 

Les gens qui insistent sur les insignes peuvent même écrire 

try compute something catch error then handle error unless error? then handle success

ce qui est un peu cool et un peu illisible. 

Une clause finally devrait être avant la unless, bien sûr.

0
John Frazer