如果值小于指示值,则引发自定义异常

Raise Custom Exception if Value is Less than Indicated Value

提问人:Zixxy7 提问时间:8/16/2022 更新时间:8/16/2022 访问量:197

问:

我正在编写一个代码,其中用户必须输入一个整数,并且代码需要在两种情况下使用自定义文本引发自定义异常: a) 如果输入不是整数 b) 如果整数小于 8

我做了第一部分:

begin
  print "Enter the price: " 
  price = Integer gets
rescue
  puts "Error: the entered value is not a number"
  raise
end

但是如果输入的数字小于 8,我不知道如何引发错误。它需要如下所示:

Enter the price:
==> 7

Output:
==> Error: the minimum price needs to be at least 8 euro

对不起,这么基本的问题。我仍在学习,异常处理对我来说是很新鲜的话题。

Ruby 异常

评论

1赞 Stefan 8/16/2022
现在,您打印文本并引发一个没有文本的异常。要使用自定义文本进行自定义例外,您可能需要类似 .raise "the entered value is not a number"

答:

3赞 spickermann 8/16/2022 #1

您可以引发如下异常:

if price < 8
 raise ArgumentError, 'the minimum price needs to be at least 8 euro'
end

评论

0赞 Zixxy7 8/16/2022
那行得通!谢谢!但是,理想情况下,我想完全跳过“ArgumentError”或将其更改为“Error”或其他自定义名称,以免混淆用户?
2赞 spickermann 8/16/2022
我只是使用,因为这是 Ruby 内置的匹配默认异常(参见:Ruby 的异常与 StandardError)。但是,当它更适合您的领域时,请随意使用其他东西。ArgumentError