Rails不会将Java异常传播到ApplicationController
我有一个rails网站,模型将导致一些后端服务。我在ApplicationController中有一个从StandardError中解救出来的工具,它可以捕获rails异常,但不能从后端服务捕获异常 应用程序控制器:Rails不会将Java异常传播到ApplicationController,java,ruby-on-rails,ruby,Java,Ruby On Rails,Ruby,我有一个rails网站,模型将导致一些后端服务。我在ApplicationController中有一个从StandardError中解救出来的工具,它可以捕获rails异常,但不能从后端服务捕获异常 应用程序控制器: class ApplicationController < ActionController::Base rescue_from StandardError do |exception| # do something end end class Statemen
class ApplicationController < ActionController::Base
rescue_from StandardError do |exception|
# do something
end
end
class StatementsController < ApplicationController
def show
# get statement
respond_to :js
end
end
实际控制人:
class ApplicationController < ActionController::Base
rescue_from StandardError do |exception|
# do something
end
end
class StatementsController < ApplicationController
def show
# get statement
respond_to :js
end
end
如果我确实在show方法中发出“error message”,则ApplicationController的救援方法可以捕获此错误。但是,如果get语句遇到来自后端服务的服务异常,则ApplicationController无法捕获该异常。然而,如果我这样做
class StatementsController < ApplicationController
def show
# get statement
respond_to :js
rescue StandardError => e
# Don't even need to write code here
end
end
然后applicationController可以捕获java异常。
我对rails很陌生。有人能帮我吗?谢谢我知道您是Rails新手。但是,您在Rails中从哪里发现Java异常?因为后端服务是用Java编写的,当ruby调用服务对象并发生故障时,jruby无法像预期的那样捕获这些异常。我偶然看到这篇文章:它说jruby 1.7.0中一个有趣的变化是Java异常不再继承ruby异常。这意味着他们将不会被标准的全球救援抓住。也就是说,执行下面的代码将在1.6.8下打印“获救”,但在1.7.0下会放大。这解释了为什么java异常不会传播回全局救援。