我有一个方法只采用一个参数:
def my_method(number) end
如果使用number < 2
?调用方法,如何引发错误?通常,我如何定义方法参数的条件?
例如,我想在调用时出错:
my_method(1)
Wand Maker.. 6
您可以在函数的开头添加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
如果您不想使用,可以定义自定义异常类ArgumentError
如果您正在构建类似框架的东西,那么,您可以利用元编程技术来拦截方法调用并应用一些验证.请参阅Ruby模块中每个方法调用的执行代码.您可能需要提出某种DSL来表达这些验证 - 验证DSL的典型示例是Rails中的Active Record Validations.
总之,对于日常用例,简单raise
(或fail
)rescue
就足够了.只有在构建通用框架时才需要元编程和基于DSL的验证.
您可以在函数的开头添加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
如果您不想使用,可以定义自定义异常类ArgumentError
如果您正在构建类似框架的东西,那么,您可以利用元编程技术来拦截方法调用并应用一些验证.请参阅Ruby模块中每个方法调用的执行代码.您可能需要提出某种DSL来表达这些验证 - 验证DSL的典型示例是Rails中的Active Record Validations.
总之,对于日常用例,简单raise
(或fail
)rescue
就足够了.只有在构建通用框架时才需要元编程和基于DSL的验证.