【发布时间】:2011-09-18 08:28:48
【问题描述】:
我阅读了 JRuby Performance: Exceptions are not flow control 的博文,该博文主张在特殊情况下避免使用异常。
我意识到我经常使用救援来处理 LoadErrors 是有罪的。
是否有替代require 的方法,如果文件存在则尝试加载文件,但如果不存在则不抛出异常?
背景:如果你想知道“为什么你有你并不绝对需要的要求?”,这是我的故事:
- 在为 Ruby 1.8 编程时,我使用了
require "rdoc/usage",以便在我没有在命令行应用程序中输入正确数量的参数时提供使用信息。这会在开箱即用的 1.9 上引发异常。 - 我的应用程序的一部分涉及在我的 Windows 桌面上运行时操作 win32ole 的代码。如果涉及的文件在执行繁重计算工作的 Linux 服务器下运行,则会导致 LoadError。使用 win32ole 的文件还有在我的测试套件中测试的其他代码,因此在 Linux 下运行我的测试套件时,我必须要求这些文件。我应该拆分这些文件,但这似乎有点像牦牛剃须。
【问题讨论】:
-
我有一个非常相似的用例(即:工具中的可选扩展)。我很想知道 LoadError 是否是唯一的方法。
-
请注意,本文讨论的情况是,每个 Rails 请求都会引发数百 个异常,而您是在讨论引发两个异常一次在程序的整个生命周期中。