coffeescript try / catch的简短表示法

时间:2013-08-25 09:39:06

标签: syntax coffeescript try-catch shortcut

我有时写代码如下:

try doSomething()
catch e
  handleError e

这不是什么好看和干净的coffeescript代码应该是什么样的。

有没有办法写:

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

这会在我的try / catch语句中节省大约33%的代码行;)

2 个答案:

答案 0 :(得分:41)

编写try / catch单行程序就像if-then one-liners或使用then关键字循环单行:

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

如果您愿意,甚至可以将它放在一行:

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

答案 1 :(得分:0)

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

这有点酷,有点难以理解。

当然,finally子句必须在 unless之前