//添加页面
public CmsPageResult add(CmsPage cmsPage) {
//校验页面是否存在,根据页面名称、站点Id、页面webpath查询
CmsPage cmsPage1 = cmsPageRepository.findByPageNameAndSiteIdAndPageWebPath(cmsPage.getPageName(), cmsPage.getSiteId(), cmsPage.getPageWebPath());
if (cmsPage1 == null) {
cmsPage.setPageId(null);
//添加页面主键由spring data 自动生成
cmsPageRepository.save(cmsPage);
//返回结果
CmsPageResult cmsPageResult = new CmsPageResult(CommonCode.SUCCESS, cmsPage);
return cmsPageResult;
}
return new CmsPageResult(CommonCode.FAIL, null);
}
问题:
解决方案:
代码模板如下:
//添加页面
public CmsPageResult add(CmsPage cmsPage) {
//校验cmsPage是否为空
if (cmsPage == null) {
//抛出异常,非法请求
// ...
}
//根据页面名称查询(页面名称已在mongodb创建了唯一索引)
CmsPage cmsPage1 = cmsPageRepository.findByPageNameAndSiteIdAndPageWebPath(cmsPage.getPageName(), cmsPage.getSiteId(), cmsPage.getPageWebPath());
//校验页面是否存在,已存在则抛出异常
if (cmsPage1 != null) {
//抛出异常,已存在相同的页面名称
// ...
}
cmsPage.setPageId(null);
//添加页面主键由spring data 自动生成
CmsPage save = cmsPageRepository.save(cmsPage);
//返回结果
CmsPageResult cmsPageResult = new CmsPageResult(CommonCode.SUCCESS, save);
return cmsPageResult;
}
系统对异常的处理使用统一的异常处理流程:
异常抛出及处理流程:
public class CustomException extends RuntimeException {
private ResultCode resultCode;
public CustomException(ResultCode resultCode) {
//异常信息为错误代码+异常信息
super("错误代码:" + resultCode.code() + "错误信息:" + resultCode.message());
this.resultCode = resultCode;
}
public ResultCode getResultCode() {
return this.resultCode;
}
}
public class ExceptionCast {
//使用此静态方法抛出自定义异常
public static void cast(ResultCode resultCode) {
throw new CustomException(resultCode);
}
}
public class ExceptionCatch {
//捕获 CustomException异常
@ExceptionHandler(CustomException.class)
@ResponseBody
public ResponseResult customException(CustomException e) {
ResultCode resultCode = e.getResultCode();
ResponseResult responseResult = new ResponseResult(resultCode);
return responseResult;
}
}