黑马程序员技术交流社区
标题: 【郑州校区】Java的新项目学成在线笔记-day3(十一) [打印本页]
作者: 谷粒姐姐 时间: 2019-1-4 14:18
标题: 【郑州校区】Java的新项目学成在线笔记-day3(十一)
5.3.3 异常捕获类
使用 @ControllerAdvice和@ExceptionHandler注解来捕获指定类型的异常
[AppleScript] 纯文本查看 复制代码
package com.xuecheng.framework.exception;
import com.xuecheng.framework.model.response.ResponseResult;
import com.xuecheng.framework.model.response.ResultCode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
@ControllerAdvice public class ExceptionCatch {
private static final Logger LOGGER = LoggerFactory.getLogger(ExceptionCatch.class);
//捕获 CustomException异常
@ExceptionHandler(CustomException.class)
@ResponseBody
public ResponseResult customException(CustomException e) {
LOGGER.error("catch exception : {}\r\nexception: ",e.getMessage(), e);
ResultCode resultCode = e.getResultCode();
ResponseResult responseResult = new ResponseResult(resultCode);
return responseResult;
}
}
5.3.4异常处理测试 5.3.4.1定义错误代码
每个业务操作的异常使用异常代码去标识。
[AppleScript] 纯文本查看 复制代码
package com.xuecheng.framework.domain.cms.response;
import com.xuecheng.framework.model.response.ResultCode; import lombok.ToString;
@ToString public enum CmsCode implements ResultCode {
CMS_ADDPAGE_EXISTS(false,24001,"页面已存在!");
//操作结果
boolean success;
//操作代码
int code;
//提示信息
String message;
private CmsCode(boolean success, int code, String message){
this.success = success;
this.code = code;
this.message = message;
}
@Override
public boolean success() {
return success;
}
@Override
public int code() {
return code;
}
@Override
public String message() {
return message;
}
}
5.3.4.2 异常处理测试
1、抛出异常 在controller、service、 dao中都可以抛出异常。
修改PageService的add方法,添加抛出异常的代码
[AppleScript] 纯文本查看 复制代码
/校验页面是否存在,根据页面名称、站点Id、页面webpath查询
CmsPage cmsPage1 = cmsPageRepository.findByPageNameAndSiteIdAndPageWebPath(cmsPage.getPageName(), cmsPage.getSiteId(), cmsPage.getPageWebPath());
if(cmsPage1 !=null){
//校验页面是否存在,已存在则抛出异常
ExceptionCast.cast(CmsCode.CMS_ADDPAGE_EXISTS);
}
2、启动工程,扫描到异常捕获的类ExceptionCatch
在springBoot的启动类中添加
[AppleScript] 纯文本查看 复制代码
@ComponentScan(basePackages="com.xuecheng.framework")//扫描common工程下的类
3、前端展示异常信息
服务端响应信息如下:
页面提取异常处理
[AppleScript] 纯文本查看 复制代码
addSubmit(){
this.$refs.pageForm.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
cmsApi.page_add(this.pageForm).then((res) => {
console.log(res);
if(res.success){
this.$message({
message: '提交成功',
type: 'success'
});
this.$refs['pageForm'].resetFields();
}else if(res.message){
this.$message.error(res.message);
}else{
this.$message.error('提交失败');
}
});
});
}
}); }
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |