核心代码:
@ResponseBody
@ExceptionHandler(value=DataAccessException.class)
public ResultVo<Object> dataAccessErrorHandler(DataAccessException e){
System.out.println("data access error handler");
return ResultVo.fail("SQL异常");
}
自定义异常类中添加核心代码: (ResultVo为自定义的返回结果类)
import com.dangjian.common.pojo.ResultVo;
import org.springframework.dao.DataAccessException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
public class CustomException extends RuntimeException {
protected String message;
public CustomException(String message) {
super(message);
this.message = message;
}
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
@ResponseBody
@ExceptionHandler(value=DataAccessException.class)
public ResultVo<Void> dataAccessErrorHandler(DataAccessException e){
System.out.println("data access error handler");
return ResultVo.fail("SQL异常");
}
}
接口中使用捕捉:
@ApiOperation("查询专题绑定的课程")
@GetMapping("courses")
public ResultVo<List<SpecialtopicCourseModel>> querySpecialtopicCourses(String specialtopicid) {
try{
List<SpecialtopicCourseModel> list = this.teachSpecialtopicService.querySpecialtopicCourses(specialtopicid);
return ResultVo.ok(list);
} catch (DataAccessException e){
return ResultVo.fail("查询专题绑定的课程失败");
} catch (CustomException ex) {
return ResultVo.fail(ex.getMessage());
}
}
这时DataAccessException
就能捕捉到SQLException或者SQLSyntaxErrorException了.
参考: 博客