一、异常捕获
(一)、手动抛出
普通代码块中抛出:
if(id == 1){
throw new BusinessException(Code.BUSINESS_ERR,"请不要使用你的技术挑战我的耐性!");
}
try...catch中抛出:
注意抛出异常的地方要放在catch代码块中
try{
int i = 1/0;
}catch (Exception e){
throw new SystemException(Code.SYSTEM_TIMEOUT_ERR,"服务器访问超时,请重试!",e);
}
(二)、向上抛出
mapper层:
@Mapper
public interface NiejianghaiMapper {
public int add(Connection connection, Bill bill) throws BusinessException;
}
Service层:
接口:
public interface INiejianghaiService {
public int sum(Connection connection, Bill bill) throws BusinessException;
}
实现类:
@Service
public class NiejianghaiServiceImpl implements INiejianghaiService {
@Autowired
NiejianghaiMapper niejianghaiMapper;
public int sum(Connection connection, Bill bill) throws BusinessException{
return niejianghaiMapper.add(connection,bill);
}
}
Controller层:
@CrossOrigin
@RestController
@RequestMapping("/firstPage")
public class FirstPageController {
@Autowired
INiejianghaiService niejianghaiService;
@GetMapping("/hotDepart")
public int findHotDepart() throws BusinessException {
return niejianghaiService.sum(connection,bill);
}
}
这样add这个方法的异常就会冲mapper层传递到controller层最终被全局异常处理捕获并进行处理。但是必须要上抛到controller层才能被捕获,如果只抛到了Service层异常是不会被捕获的。
向上抛出异常的终点必须是controller层。