所以,对于Ruby中的哈希,你可以使用像这样的hashrockets:
corned_beef = {
:ingredient1 => "beef",
:ingredient2 => "potatoes"
}
或者更简洁的json-ish风格。
corned_beef = {
ingredient1: "beef",
ingredient2: "potatoes"
}
是否有json-ish风格的方式来捕获Ruby异常?通常的方法是:
begin
# ...blah blah...
rescue ActiveRecord::RecordNotFound => e
logger.debug { "Where's da beef?" }
rescue => e
logger.debug { "#{e.message}\nBacktrace Begin:\n #
{e.backtrace.join("\n")}" }
else
# ...blah blah...
end
我开始讨厌在我的代码中看到hashrockets,即使是这样。有人请教育我。
编辑:出于某种原因,这引起了那些具有代码 - 宗教傲慢居高临下的判断力的人的评论。这是一个问题论坛,如果你不喜欢这个问题,请关闭你的窗口。 Ruby针对程序员的快乐进行了优化。我的问题是寻求我认为更干净的性感代码。不想要的是表达许多意见,这些意见对帮助实现答案毫无帮助。我是一名优秀的程序员,其遗留代码已经投入生产,服务数十亿,并且可能比大多数人年龄大。如果不回答问题,请停止铲除毫无意义的意见。到目前为止,它看起来并不像我所寻求的存在。没关系。
如果你绝对想要摆脱它,你可以回到一些Ruby's Global Variables,特别是
$! 由'raise'设置的异常信息消息。 $ @ 抛出的最后一个异常的回溯数组。
begin
raise ArgumentError, 'Your argument is invalid'
rescue ArgumentError
puts "#{$!.message}\nBacktrace Begin:\n#{[email protected]("\n")}"
# or
puts "#{$!.message}\nBacktrace Begin:\n#{$!.backtrace.join("\n")}"
end
我从来没有在任何实际的应用程序中使用任何全局变量,所以不确定你可能需要注意哪些类型的东西(例如,如果多个线程同时抛出不同的错误*可能是一个问题)。
不,AFAIK这是创建对捕获的异常的引用所需的语法。