我的申请适用于Grails 2.3.1。前几天我注意到错误控制器的奇怪行为。 Grails调用错误控制器但request.exception为null。似乎这发生在应用程序从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 async的代码,它完美无缺。 还尝试使用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
}
}
}
有人可以帮忙解释它为什么会发生吗?