【发布时间】:2013-12-16 09:02:09
【问题描述】:
这适用于运行 ruby 2.0.0-p353 的 rails 4.0.2 应用程序。
我有一个具有以下方法的助手
def render_feed_row(activity_item)
begin
if activity_item.type == "comment"
render "newsfeed/comment", :item => activity_item
elsif activity_item.type == "post"
render "newsfeed/post", :item => activity_item
else
raise NameError
end
rescue NameError => e # note: NoMethodError is a subclass of NameError
render "newsfeed/other", :item => activity_item
end
end
但是如果在newsfeed/post 部分中引发了NoMethodError,则它不会被此帮助程序捕获。这是为什么?它不渲染newsfeed/other,它实际上引发了一个异常。
【问题讨论】:
-
奇怪的是,我在引发
NameError异常时发现了NoMethodError。请向我们展示NoMethodError.superclass环境中的输出 -
有趣...由于“nil:NilClass 的未定义方法 `display_name'”,我收到“Users::Profile#transactions_log 中的 NoMethodError”
-
我认为你应该指定类似
rescue NameError, NoMethodError => e?它将允许在当前命名空间中捕获NoMethodError。 -
好主意。我刚试过,但没有用:(
-
只是将
rescue NoMethodError放在附加行中?
标签: ruby-on-rails ruby ruby-on-rails-4 activeview