我正在尝试创建自己的StandardError异常,但我似乎无法通过加注触发rescue_from。错误被提出但从未获救。我构建了一个简单的应用程序来尝试它,如下所示:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
class ApplicationController::LocationInvalid < StandardError
end
rescue_from ApplicationController::LocationInvalid, with: :reset_it
raise ApplicationController::LocationInvalid
private
def reset_it(exception)
session.clear
cookies['XSRF-TOKEN'] = form_authenticity_token if protect_against_forgery?
puts 'Reset it processed'
end
end
当我在begin / rescue / end中包含加注时,它会将e打印为ApplicationController :: LocationInvalid:
begin
raise ApplicationController::LocationInvalid
rescue => e
puts e
end
输出:
开始GET&#34; /&#34;对于127.0.0.1在2015-08-21 15:19:32 -0400 ApplicationController中:: LocationInvalid
我已尝试过各种形式的指定ApplicationController类,但结果没有变化......
答案 0 :(得分:1)
rescue_with
仅在process_action
来电期间有效,但您在课堂评估期间提出异常。可能最简单的测试方法是使用一些操作创建简单的控制器,并尝试在该操作期间引发异常,rescue_with
应该有效。