2009-07-10 10 views
2

J'ai déjà beaucoup travaillé avec Java et maintenant je travaille plus avec Ruby. Une chose que je ne peux pas comprendre cependant est ce qui est l'équivalent de ruby ​​à Java "NullPointerException"? Je veux tester les variables quand j'entre une fonction et si elles sont nulles je veux soulever ce type d'exception. Y at-il une classe d'erreur ruby ​​spécifique pour élever ce type d'exception?lever "NullPointerException" dans Ruby

Répondre

8

Raising un ArgumentError pourrait convenir à votre situation. Vous pouvez faire quelque chose comme ceci:

def i_dont_take_nils_from_nobody x 
    raise ArgumentError.new "You gave me a nil!" if x.nil? 
    puts "thanks for the #{x}" 
end 

i_dont_take_nils_from_nobody nil 
#=> ArgumentError: You gave me a nil! 
i_dont_take_nils_from_nobody 1 
#=> thanks for the 1 
5

La liste d'exceptions ne comprend pas de telles choses.

nil est un objet, et les éléments peuvent être vérifiés pour s'assurer qu'ils ne sont pas nuls.

result = Base.find(blah) 
result.nil? 

appel d'une méthode sur zéro que nul (l'objet) n'a pas devrait vous donner une exception NoMethodError.

result = Base.find(blah) #returning no result 
result.my_advanced_functionality(42) 

Depuis résultat est nul, et l'objet nul ne définit pas my_advanced_functionality fonction, vous obtiendrez un NoMethodError

L'une des choses que je vois une bonne quantité que j'apprends est « Vous avez appelé à tort id sur nil, qui serait 4 "(parce que l'ID d'objet de nil est 4)

L'exception heirarchy a une exception ArgumentError, que je n'ai jamais utilisée, mais qui pourrait vous servir.

2

Il n'y a pas des pointeurs nuls en rubis, mais vous pouvez toujours soulever l'exception si vous voulez:

 
>> class NullPointerException < Exception; end 
=> nil 
>> raise NullPointerException 
NullPointerException: NullPointerException 
    from (irb):2 
+1

1-liner: raise classe NullPointerException klochner

Questions connexes