Actions
Bug #17726
closed`respond_to_missing?` doesn't raise when called from `defined?`
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 3.1.0dev (2021-03-16T19:10:11Z master 58660e9434) [x86_64-darwin20]
Description
I'm not sure whether or not this is expected behavior, but if respond_to_missing?
is called from defined?
, it won't raise an exception.
For example:
class Foo
def respond_to_missing?(*args)
puts "hi"
raise
end
end
foo = Foo.new
p defined?(foo.bar)
If you run this program, the output is this:
$ ruby -v test.rb
ruby 3.1.0dev (2021-03-16T19:10:11Z master 58660e9434) [x86_64-darwin20]
hi
nil
But I would expect this to raise an exception. Is the current behavior the desired behavior?
Thanks!
Updated by jeremyevans0 (Jeremy Evans) about 3 years ago
I believe this is expected. defined?
swallows exceptions in other cases, such as when a method raises an exception:
class Foo
def bar(*args)
puts "hi"
raise
end
end
foo = Foo.new
p defined?(foo.bar.to_s)
Updated by jeremyevans0 (Jeremy Evans) almost 3 years ago
- Status changed from Open to Closed
Actions
Like0
Like0Like0