我的应用程序适用于 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
}
}
}
有人可以帮忙解释为什么会发生吗?