Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rails不会将Java异常传播到ApplicationController_Java_Ruby On Rails_Ruby - Fatal编程技术网

Rails不会将Java异常传播到ApplicationController

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

我有一个rails网站,模型将导致一些后端服务。我在ApplicationController中有一个从StandardError中解救出来的工具,它可以捕获rails异常,但不能从后端服务捕获异常

应用程序控制器:

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异常不会传播回全局救援。