正如 liron 在这个问题中所问的那样,-d 子文件中的语法错误require
由该方法挽救,require
并作为require
. 为什么会这样设计?将错误归因于require
读取的子文件中的语法错误而不是语法错误有什么好处?我的理解是,这个特性是在 gem 系统成为 Ruby 的标准部分时引入的。可能与此有关。
问问题
72 次
1 回答
1
有问题的堆栈跟踪的相关部分:
/home/***/.rvm/.../rubygems/core_ext/kernel_require.rb:45:in `require':
.../food_finder/lib/restaurant.rb:84:
syntax error, unexpected end-of-input, expecting keyword_end (SyntaxError)**
它确实说明了错误在哪里。
语法错误包含在一个错误中, require
因为这是引发错误的地方:文件正在由require
方法处理。如果所需文件中有错误,它会被require
.
它被救出require
(并可能重新提出),因此require
可以在与找不到文件和 gem 失败有关的各种情况下尝试原始方法。
您是否建议require
将这只是另一种方法,以某种方式进行特殊处理,以便错误处理以完全不同的方式运行?这样做的投资回报率值得吗?
不颠覆 Ruby 工作方式的“好处”是它保持统一。当明确说明错误时,我认为这样做的投资回报率很小。一些混淆可能来自于不去探索,这require
只是另一种方法——但它是,因此,它遵循与语言其他部分相同的规则。
于 2013-05-18T13:32:04.173 回答