Playframework 我应该捕获异常并返回error(),还是从Play框架中的控制器抛出异常
我和我的团队对这出戏来说都是比较新的!框架(1.2.5),我们已经创建了大量代码,这些代码在我们的控制器中看起来与此类似Playframework 我应该捕获异常并返回error(),还是从Play框架中的控制器抛出异常,playframework,Playframework,我和我的团队对这出戏来说都是比较新的!框架(1.2.5),我们已经创建了大量代码,这些代码在我们的控制器中看起来与此类似 public static void list() { try { List<ActionModel> actions = ActionModel.loadActions(); render( actions ); } catch ( Exception ex ) { error(); } } public静态作废列表(){
public static void list() {
try {
List<ActionModel> actions = ActionModel.loadActions();
render( actions );
} catch ( Exception ex ) {
error();
}
}
public静态作废列表(){
试一试{
List actions=ActionModel.loadActions();
提出(行动);
}捕获(例外情况除外){
错误();
}
}
与通常的Play框架模型不同,我们的模型层有一些自定义代码。我的问题是,可以跳过try-catch并将异常抛出控制器方法吗?事实上,这是一种更正确的处理方法吗?您的代码实际上什么都不做,因为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();
}
}
然后在控制器中,您需要使用(ErrorHelper.class)
此外,您还可以通过向最终用户显示错误代码来定制
500.html
文件,并要求他们使用错误代码致电技术支持,如果没有例外,技术支持应该已经收到电子邮件 比什么都不做更糟糕的是,罗宾建议的代码无法正常工作。Play抛出异常以渲染结果。因此,即使没有错误,也将始终调用catch。您的语句不正确,play将检查异常是否是play.mvc.Result
的实例,只有当它不是结果时,才会调用@catch
处理程序,对此表示抱歉。我想你应该在问题下面发表评论;-)