我需要在特殊情况下捕获NameError.但我不想捕获NameError的所有SubClasses.有没有办法实现这个目标?
# This shall be catched begin String::NotExistend.new rescue NameError puts 'Will do something with this error' end # This shall not be catched begin # Will raise a NoMethodError but I don't want this Error to be catched String.myattribute = 'value' rescue NameError puts 'Should never be called' end
解决方法
如果异常的类与给定的不同,则可以重新引发异常:
begin # your code goes here rescue NameError => exception # note that `exception.kind_of?` will not work as expected here raise unless exception.class.eql?(NameError) # handle `NameError` exception here end