我正在使用 Play!Framework 1.2.5 。我想以自定义的方式处理play框架中的所有错误。例如,如果存在路由错误,我想显示相应的错误消息,而不是显示整个路由文件。同样对于其他错误,我想显示我自己的错误页面。怎么做?
答案 0 :(得分:2)
您可以通过在errors
包上创建名为views
的新子包来定义自己的错误页面。在此子包中,您可以使用错误代码名称为自定义错误页面创建模板文件,例如:
404.html
未找到错误页面403.html
代表禁止错误页面500.html
代表内部服务器错误页面不要担心找不到默认路由错误页面,它只显示在开发模式上以帮助开发阶段。在生产模式下,将不会显示此错误页面(默认框架错误页面)。
- 更新
此@Catch
注释可能对处理其他类型的异常很有用。它充当控制器中的动作拦截器,并在执行某些操作时发生异常时处理异常。请注意,此注释仅适用于控制器类。
请查看文档here以获取进一步阅读。
答案 1 :(得分:2)
我们需要比@iwawiwi提到的更多控制来弄清楚数据库抛出了什么数据库约束消息。这是通过在@Catch
类中使用带有Controller
注释的方法解决的:
@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);
}
通过这种方式,我们可以找到应用程序中缺少的路径/错误链接。