Ruby中rescue抓取require异常的解决办法

在Ruby中,基本上所有异常都能用rescue来抓取到并排除掉。但是依赖库语句require ‘xxx’导致的异常却不能直接抓取到。那么怎么才能排除掉require异常呢?

老蔡查阅典籍后发现,在Ruby中,空rescue子句的隐含意思是rescue StandardError,而require异常的错误是LoadError,并不是StandardError类的子类,所以不能直接抓取到。

解决的办法也很简单,就是在rescue后面加上LoadError,如下

begin
  require 'xxx'
    # 你的正常代码
  rescue LoadError
    # 你的容错代码
end

于是乎可以在缺少某个库的时候也能正常跑程序。

老蔡是用于在缺少GUI库的时候,只用控制台跑程序,HOHO,这样某些时候,比如在无界面的linux shell里面跑的木有妨碍。