我和我的团队对Play来说相对较新!在框架(1.2.5)中,我们创建了大量代码,这些代码在我们的控制器中看起来与此类似。
public static void list() {
try {
List<ActionModel> actions = ActionModel.loadActions();
render( actions );
} catch ( Exception ex ) {
error();
}
}
Exception来自我们的模型层,我们有一些自定义代码,而不是通常的Play Framework模型。我的问题是,可以跳过try catch并将Exception抛出控制器方法吗?事实上这是一种更正确的处理方法吗?
答案 0 :(得分:5)
您的代码实际上什么都不做,因为PlayFramework几乎完全相同,即捕获任何未捕获的异常并调用error()来输出500内部错误。
在我的项目中,我们会通过向开发人员发送电子邮件来报告任何意外错误,换句话说是异常,基本上是一些代码,如下所示:
public class ErrorHelper extends Controller{
@Catch(Exception.class)
public static void handleException(final Exception e) {
String errorCode = ErrorHelper.generateErrorCode();
renderArgs.put("errorCode", errorCode);
new Job() {
@Override
public void doJob() throws Exception {
Mail.reportError(errorCode, e);
}
}.now();
}
}
然后在您的控制器中,您需要@With(ErrorHelper.class)
。
此外,您可以通过向最终用户显示错误代码来定制您的500.html
文件,并要求他们使用它来致电技术支持,如果没有例外,应该已经收到了电子邮件。