3

我的应用程序适用于 grails 2.3.1。几天前,我注意到错误控制器的奇怪行为。Grails 调用错误控制器,但 request.exception 为空。这似乎发生在应用程序从 grails 2.2.x 更新到 2.3.x 并且我们开始使用异步控制器之后。我的控制器:

package grailsapp

import static grails.async.Promises.task

class MyController {
    def controllerAction(ActionCommand command) {
        task {
            // Controller code
        }
    }
}

此外,只有当控制器代码包含困难的计算时才会发生这种情况,这需要很长时间(大约 30 秒)。

我尝试在没有 grails 异步的情况下运行代码,并且效果很好。还尝试使用 try\catch 在任务中包装代码——没有任何改变,catch 部分没有捕获任何东西。

package grailsapp

import static grails.async.Promises.task

class MyController {
    def controllerAction(ActionCommand command) {
        task {
            try{
                // Controller code              
            } catch (Exception e){
                e.printStackTrace()
                // Nothing caught here
            }
        }
    }
}

尝试包装整个动作方法体——结果相同。

package grailsapp

import static grails.async.Promises.task

class MyController {
    def controllerAction(ActionCommand command) {
        try{
            task {
                // Controller code
            }               
        } catch (Exception e){
            e.printStackTrace()
            // Nothing caught here
        }
    }
}

有人可以帮忙解释为什么会发生吗?

4

0 回答 0