class MyKlass
include ActiveSupport::Rescuable
rescue_from Exception do
return "rescued"
end
#other stuff
end
MyKlass は純粋な Ruby オブジェクトですが、Rails アプリケーション内で定義されています。
Rails コンソールで MyKlass インスタンスを呼び出して、確実に例外を発生させるメソッドを適用しようとすると、救済されると期待されるエラー以外は何も起こりません。
使用方法は次のとおりです。
class MyKlass
include ActiveSupport::Rescuable
# define a method, which will do something for you, when exception is caught
rescue_from Exception, with: :my_rescue
def some_method(&block)
yield
rescue Exception => exception
rescue_with_handler(exception) || raise
end
# do whatever you want with exception, for example, write it to logs
def my_rescue(exception)
puts "Exception caught! #{exception.class}: #{exception.message}"
end
end
MyKlass.new.some_method { 0 / 0 }
# Exception caught! ZeroDivisionError: divided by 0
#=> true
例外の救出は犯罪であることは言うまでもありません。