2012-08-12 29 views
6

我写的脚本在启动时运行,并要求设置一个环境变量,但哪个Ruby的最好是Exceptions?我用LoadError,我只是想尽可能描述,并遵循适当的约定。Ruby,哪个异常最好处理未设置的环境变量?

其次,我不能找到另一种方式来查看是否设置了环境变量除了检查它的长度,但看起来并不那么优雅。

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 
+0

任何理由不只是写自己的异常? – muffinista 2012-08-12 01:04:49

+0

因为我宁愿遵循一个更受欢迎的约定,如果它对我有用。 – 2015-11-15 03:44:34

回答

2

制作自己的异常很简单:

MyError = Class.new(StandardError) 
raise MyError, "FOO environment variable not set" unless ENV['FOO'] 
system "open http://example.com/" + ENV['FOO'] 

捕获该代码块中的例外在这种情况下,可能并不合适,因为它似乎你只是打印与它的消息。通常情况下,除非您准备好终止程序,否则绝不会引发异常。换句话说,避免对预期条件使用例外。如果所设置的程序可以继续没有FOO,倒不如简单地使系统语句来执行:

system("open http://example.com/" + ENV['FOO']) if ENV['FOO'] 

ENV['FOO'] && system("open http://example.com/" + ENV['FOO']) 
12

你可以这样做:

ENV['SECRET_KEY_XXYY'] || raise('no SECRET_KEY_XXYY provided') 
+1

我喜欢这种简单,谢谢! – 2014-02-07 00:20:17