3

我有 Java 背景,在 Java 中,当程序员使用错误的参数调用方法时,会抛出异常。Ruby 程序员如何处理错误的方法参数?

核心类的两个相反的例子:

irb(main):009:0> "" * (-2)
ArgumentError: negative argument
        from (irb):9:in `*'
        from (irb):9
        from C:/Ruby/Ruby193/bin/irb:12:in `<main>'


irb(main):013:0> (-2).times { puts 'hello' }
=> -2
4

1 回答 1

3

我通常倾向于避免在 Ruby 中进行参数验证。

但是,这实际上取决于您的主要目的是什么。如果您担心可靠性,那么只要参数将导致不可恢复的错误,请采取防御措施并引发异常。

这也取决于您的用例:

  • 它们是公共 API 吗?您可能会强烈考虑验证。
  • 它们是私有 API/方法吗?好吧,我通常会信任程序员。

一种有效的方法可能是在调试阶段使用参数检查,这有助于检测 API 的错误和滥用,然后 - 一旦测试 - 删除检查。

归根结底,这个棘手的问题没有完美的答案。它非常依赖于上下文和开发人员的个人判断。

于 2012-12-30T01:16:06.293 回答