【发布时间】:2018-06-08 20:29:38
【问题描述】:
我尝试了这个earlier,每个人都使用了救援块语法。 请不要去那里。给定以下工作代码:
begin
(1..1000).each do |i|
puts i
sleep 1
end
rescue Exception => e
puts "\nCaught exception..."
puts "Exception class: #{e.class}"
end
在运行时按 CTRL+C 会按预期打印出“Caught exception...”。在救援行中syntax wise究竟发生了什么,特别是在Exception 和变量e 之间以及=> 之间?
“rescue”这个词是一个关键字...... ruby 语言的一部分。 “e”是一个变量,在功能上也可以是“a”、“b”或“c”。下面的代码也同样有效。
begin
(1..1000).each do |i|
puts i
sleep 1
end
rescue Exception => b
puts "\nCaught exception..."
puts "Exception class: #{b.class}"
end
什么是“例外”和“=>”?是否有另一种方法可以编写此表达式以使其从句法角度更易于理解?我不认为我们在这里处理哈希,因为下面的代码可以编译,但只要按下 CTRL+C 就会抛出错误(未定义的局部变量或方法 `e')。
begin
(1..1000).each do |i|
puts i
sleep 1
end
rescue { Exception => b }
puts "\nCaught exception..."
puts "Exception class: #{b.class}"
end
有人可以解释发生了什么吗?特别是这个特定示例中的语言元素 '=>' (hashrocket) 是什么,因为它似乎与哈希无关?
【问题讨论】: