所有的异常,并显示自定义错误页,我使用玩!框架1.2.5。我想以自定义的方式处理播放框架中的所有错误。例如,如果有路线错误,我想显示一个适当的错误信息,而不是显示整个路线文件。同样对于其他错误,我想显示我自己的错误页面。这个怎么做?处理,而不是默认的框架错误页
1
A
回答
2
您可以通过创建新的子包上views
包名为errors
定义自己的错误页面。
404.html
为找不到错误页403.html
为Forbidden错误页:在这个子包,您可以使用错误代码名称,如您的自定义错误页创建模板文件500.html
为内部服务器错误页- 等...
不要担心不发现错误页面的默认路由,它只是在开发模式,帮助开发阶段中。在生产模式下,此错误页面(默认框架错误页面)将不会显示。
- UPDATE
这@Catch
注释办理其他类型的异常可能是有用的。它充当控制器中的动作拦截器,并且在执行某个动作时发生异常时处理异常。请注意,此注释仅适用于控制器类。
请检查进一步阅读文档here。
2
我们需要比@iwawiwi提到要弄清楚什么数据库约束消息是由数据库抛出更多的控制。这解决了使用的方法与在Controller
类@Catch
注释是这样的:
@Catch(value=PersistenceException.class)
public static void handleException(PersistenceException exception) {
..
}
我没有听说注解之前,这已经在我的工作情况相当不错。
缺失路线,我们已经增加了一点在这个Controller
还有:
@Catch(value=ActionNotFoundException.class)
public static void catchRouteNotFound(ActionNotFoundException exception) {
String referer = session.get("referer");
Logger.error("ActionNotFoundException, referer: %s", referer);
Logger.error("Exception: %s", exception);
}
这样我们就可以了解在应用程序中缺少路由/错误的链接。
相关问题
- 1. 处理404错误而不转储日志中的默认错误。
- 2. 图像而不是iPhone的MapKit框架中的默认引脚?
- 3. JavaEE默认错误处理程序servlet不会抛出错误
- 4. Spring框架默认错误页面到JSON
- 5. 播放框架中的错误处理
- 6. 默认错误处理程序的定义是什么?
- 7. 播放框架形式错误处理
- 8. 错误处理使用无框架
- 9. 在fatfree框架中处理错误
- 10. Objective-C框架错误处理
- 11. 自定义错误处理程序仍然加载默认错误页面
- 12. 页宽默认的异常处理
- 13. 默认错误页面
- 14. Ruby的默认GUI框架是什么?
- 15. response.sendError()显示的Tomcat默认的错误页面,而不是web.xml中指定错误页面
- 16. Ubuntu 14.04上的php5.6不显示错误,默认错误处理程序
- 17. Flask默认错误处理程序不被调用
- 18. 在Django REST框架中处理错误 - 返回空文件而不是错误视图
- 19. 重定向到自定义错误页面而不是默认的liferay错误页面
- 20. 如何更改zend框架的默认应用程序标题错误页面?
- 21. Python:什么是SIGTERM的默认处理?
- 22. 发送http 401错误代码而不是默认登录页面,spring security
- 23. 输出自定义错误消息而不是默认的php错误消息
- 24. 自动提供HttpUnauthorizedResult(401错误)默认StatusDescription而不是null
- 25. 显示错误而不是ruby默认值?
- 26. 在Windows窗体中替换默认的未处理的错误对话框
- 27. 错误设置默认棚架
- 28. Spring的默认登录处理url的HTTP 404错误(/登录)
- 29. 无法处理默认错误对话框动态的DataGridView(多NULL值)
- 30. 实体框架默认值
+1哇,太酷了。我只是注意到这个注释的力量,..;)但是,当我们想要在控制器中的'@ Before'拦截器标记的某个动作中放置'@ Catch'拦截器时可能会遇到问题。因为他们两个充当拦截器。但是,这不是问题,只是不用'@ Catch'标记动作,只是在方法内部处理。不是吗? – 2013-03-18 16:01:51
我认为说实话不重要。据我所知,Play在你的控制器中寻找异常处理器来处理抛出的异常。如果它被引入'@ Before'注释方法中,我认为它不重要。我认为你可以通过在@Before方法中抛出你自己的CustomException来轻松尝试,并尝试捕获它。 – evandongen 2013-03-18 16:04:22