我和我的团队对Play来说相对较新!在框架(1.2.5)中,我们创建了大量代码,这些代码在我们的控制器中看起来与此类似.
public static void list() {
try {
List<ActionModel> actions = ActionModel.loadActions();
render( actions );
} catch ( Exception ex ) {
error();
}
}
Run Code Online (Sandbox Code Playgroud)
Exception来自我们的模型层,我们有一些自定义代码,而不是通常的Play Framework模型.我的问题是,可以跳过try catch并将Exception抛出控制器方法吗?这实际上是一种更正确的处理方式吗?
您的代码实际上什么都不做,因为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();
}
}
Run Code Online (Sandbox Code Playgroud)
然后在你的控制器中你需要@With(ErrorHelper.class).
您还可以500.html通过向最终用户显示错误代码来定制您的文件,并要求他们使用它来致电技术支持,如果没有例外,它应该已经收到了电子邮件.
| 归档时间: |
|
| 查看次数: |
3216 次 |
| 最近记录: |