处理所有异常并显示自定义错误页面而不是默认框架错误页面

时间:2013-03-18 07:32:47

标签: java playframework playframework-1.x

我正在使用 Play!Framework 1.2.5 。我想以自定义的方式处理play框架中的所有错误。例如,如果存在路由错误,我想显示相应的错误消息,而不是显示整个路由文件。同样对于其他错误,我想显示我自己的错误页面。怎么做?

2 个答案:

答案 0 :(得分:2)

您可以通过在errors包上创建名为views的新子包来定义自己的错误页面。在此子包中,您可以使用错误代码名称为自定义错误页面创建模板文件,例如:

  1. 404.html 未找到错误页面
  2. 403.html代表禁止错误页面
  3. 500.html代表内部服务器错误页面
  4. 等...
  5. 不要担心找不到默认路由错误页面,它只显示在开发模式上以帮助开发阶段。在生产模式下,将不会显示此错误页面(默认框架错误页面)。

    - 更新

    @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);
}

通过这种方式,我们可以找到应用程序中缺少的路径/错误链接。