0

我想用 Ruby 2.3 和 2.4 中的自定义类来拯救一些代码。但与以前的版本不同(例如运行良好的 2.2),我遇到了一些麻烦。这里有一个例子:

给定这个类:

class CustomError < StandardError
end

此代码被成功抢救:

begin
  'foo'.bar(:boom)
rescue
  puts 'THIS IS FINE.'
end

# => printing "THIS IS FINE." on the screen

这个也成功救了:

begin
  'foo'.bar(:boom)
rescue StandardError
  puts 'THIS IS FINE.'
end

# => printing "THIS IS FINE." on the screen

但不是这个:

begin
  'foo'.bar(:boom)
rescue CustomError
  puts 'THIS IS FINE.'
end

引发此消息:

“foo”的未定义方法“bar”:字符串(NoMethodError)

我不知道为什么我的自定义异常类没有被处理。

4

1 回答 1

0

你救人CustomError,却被NoMethodError抚养。NoMethodError继承StandardError,这就是为什么它可以用rescue StandardError.

于 2019-05-14T13:41:10.117 回答