我有一个方法只采用一个参数:
def my_method(number)
end
Run Code Online (Sandbox Code Playgroud)
如果使用number < 2?调用方法,如何引发错误?通常,我如何定义方法参数的条件?
例如,我想在调用时出错:
my_method(1)
Run Code Online (Sandbox Code Playgroud)
您可以在函数的开头添加guard,如果参数无效,则引发异常.例如:
def my_method(number)
fail ArgumentError, "Input should be greater than or equal to 2" if number < 2
# rest of code follows
# ...
end
# Sample run
begin
my_method(1)
rescue => e
puts e.message
end
#=> Input should be greater than or equal to 2
Run Code Online (Sandbox Code Playgroud)
如果您不想使用,可以定义自定义异常类ArgumentError
如果您正在构建类似框架的东西,那么,您可以利用元编程技术来拦截方法调用并应用一些验证.请参阅Ruby模块中每个方法调用的执行代码.您可能需要提出某种DSL来表达这些验证 - 验证DSL的典型示例是Rails中的Active Record Validations.
总之,对于日常用例,简单raise(或fail)rescue就足够了.只有在构建通用框架时才需要元编程和基于DSL的验证.
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |