在Ruby中引发"NullPointerException"

Jos*_*ore 2 ruby java

我以前在Java上工作过很多,现在我正在使用Ruby.我无法弄清楚的一件事是什么是相当于Java"NullPointerException"的ruby?我想在输入函数时测试变量,如果它们是nil我想提出这种类型的异常.是否有特定的ruby错误类来引发此类异常?

Bar*_*cat 8

提出ArgumentError可能适合您的情况.你可以这样做:

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
Run Code Online (Sandbox Code Playgroud)


小智 5

例外列表不包含此类内容.

nil是一个对象,可以检查项目以确保它们不是零.

result = Base.find(blah)
result.nil?
Run Code Online (Sandbox Code Playgroud)

在nil(对象)没有的nil上调用一个方法应该会给你一个NoMethodError异常.

result = Base.find(blah) #returning no result
result.my_advanced_functionality(42)
Run Code Online (Sandbox Code Playgroud)

由于结果为nil,并且nil对象没有定义my_advanced_functionality函数,因此您将获得NoMethodError

我学到的东西之一就是"你在nil上错误地称为id,这将是4"(因为nil的对象id为4)

heirarchy例外有一个ArgumentError异常,我从未使用过,但看起来它可能会为你服务.