我写的脚本在启动时运行,需要设置一个环境变量,但是Ruby的Exceptions中哪一个最好呢?我使用了LoadError
,我只是想尽可能地描述并遵循适当的约定。
其次,除了检查环境变量的长度之外,我找不到其他方法来查看它是否被设置,但这似乎并不那么优雅。
begin
raise LoadError if ENV['FOO'].to_s.length == 0
system "open http://example.com/" + ENV['FOO']
rescue Exception => e
puts "=> #{e} FOO environment variable not set"
end
6条答案
按热度按时间fruv7luv1#
您可以执行以下操作:
kuhbmx9i2#
根据documentation for LoadError,当一个“require”出现问题时,应该使用它。我认为更合适的方法是子类化
StandardError
,并创建一个适合您使用的子类。如果这看起来有点过分,我会使用StandardError
并附带一个描述性消息。vcirk6k63#
您自己的例外很容易:
在这种情况下,捕捉代码块中的异常可能不合适,因为它看起来只是打印了一条消息。作为一条规则,除非你准备好了终止程序,否则永远不要引发异常。换句话说,避免在预期的条件下使用异常。如果程序可以在没有设置FOO的情况下继续运行,那么最好简单地使系统语句的执行成为条件:
或
ax6ht2ek4#
可以使用ENV.fetch('FOO '),如果找不到,则会引发KeyError。
nzkunb0c5#
http://bugs.ruby-lang.org/projects/ruby/wiki/ExceptionClassesDoc中有一个异常类型列表
我可能会选择ArgumentError,因为
ENV['FOO']
的值不是您所期望的值。5us2dqdw6#
您可以对块使用fetch来引发特定错误