Java 在没有if-else的情况下,如何处理springmvc项目中的错误?
我不明白如何处理以下错误: 在类Java 在没有if-else的情况下,如何处理springmvc项目中的错误?,java,rest,spring-mvc,exception,Java,Rest,Spring Mvc,Exception,我不明白如何处理以下错误: 在类CustomerService中,我通过id删除客户,如果这样的id不存在,则必须抛出错误!如果没有ifelse构造,您怎么办 客户服务: //删除客户 公共客户(长id){ Customer=customerRepository.getByIdAndUserRole(id,“客户”); customerRepository.delete(客户); } 客户控制器: //删除映射 // //删除ID为的客户 @DeleteMapping(“/customers/
CustomerService
中,我通过id
删除客户,如果这样的id
不存在,则必须抛出错误!如果没有if
else
构造,您怎么办
客户服务
:
//删除客户
公共客户(长id){
Customer=customerRepository.getByIdAndUserRole(id,“客户”);
customerRepository.delete(客户);
}
客户控制器
:
//删除映射
//
//删除ID为的客户
@DeleteMapping(“/customers/{id}”)
void deleteCustomer(@PathVariable Long id){
customerService.deleteCustomer(id);
}
您可以尝试改用。这是一个crudepository
的deleteById
方法(希望您正在使用它),如果找不到客户,它会抛出IllegalArgumentException
我假设“error”的意思是“exception”,然后在控制器中,可以用try-catch块包围,如下所示:
try{
customerService.deleteCustomer(id);
} catch (IllegalArgumentException e) {
log.error("No customer id exists!", e);
// if you have no logger, then use System.out.println() at least
}
如果您希望向调用者返回错误,则将数据类型从void更改为HttpResponse
,当捕获异常时,您可以返回HttpResponse(“没有具有该id的客户!”,HTTP.BAD_REQUEST)
。现在,调用方将收到一个400错误的请求
更好的方法是捕获服务本身中的异常,并向控制器返回布尔值(true
如果客户被删除,如果客户无法删除/找不到,则返回false
。您可以尝试改用。这是一个crudepository
的deleteById
方法(希望您正在使用它),如果找不到客户,它会抛出IllegalArgumentException
我假设“error”的意思是“exception”,然后在控制器中,可以用try-catch块包围,如下所示:
try{
customerService.deleteCustomer(id);
} catch (IllegalArgumentException e) {
log.error("No customer id exists!", e);
// if you have no logger, then use System.out.println() at least
}
如果您希望向调用者返回错误,则将数据类型从void更改为HttpResponse
,当捕获异常时,您可以返回HttpResponse(“没有具有该id的客户!”,HTTP.BAD_REQUEST)
。现在,调用方将收到一个400错误的请求
更好的方法是捕获服务本身中的异常,并向控制器返回一个布尔值(
true
如果客户被删除,false
如果无法删除/找不到客户)。如果要抛出错误,则必须检查一个条件,即将有一个if语句,但不一定需要另一个
例如,您可以根据下面的方法检查delete和throw error的响应
if (deleteCount == 0) {
//throw error here
}
我希望这有助于您理解,程序无法知道何时抛出错误,何时不抛出错误,因此我们需要if-else让它知道在条件发生时如何操作
祝你好运,学习愉快 如果要抛出错误,则必须检查一个条件,即将有一个if语句,但不一定需要一个else语句 例如,您可以根据下面的方法检查delete和throw error的响应
if (deleteCount == 0) {
//throw error here
}
我希望这有助于您理解,程序无法知道何时抛出错误,何时不抛出错误,因此我们需要if-else让它知道在条件发生时如何操作
祝你好运,学习愉快 尝试使用控制器建议。每当发生异常时,它将直接由处理程序处理。不需要if/else或try/catch块 1) 创建一个类CustomerControllerHandler,用@ControllerAdvice注释 2) 现在创建参数类型为Exception的方法 3) 这些方法将返回所需的JSON/POJO/void 4) 用@ExceptionHandler(Exception.class)和 @响应状态(HttpStatus.BAD_请求)
尝试使用控制器建议。每当发生异常时,它将直接由处理程序处理。不需要if/else或try/catch块 1) 创建一个类CustomerControllerHandler,用@ControllerAdvice注释 2) 现在创建参数类型为Exception的方法 3) 这些方法将返回所需的JSON/POJO/void 4) 用@ExceptionHandler(Exception.class)和 @响应状态(HttpStatus.BAD_请求)
这是一个糟糕的方法。值得检查id是否不为null以避免IllegalArgumentException,因此此处不建议使用try-catch块。这就是控制器中使用@NotNull的原因。这是一种糟糕的方法。值得检查id是否不为null以避免IllegalArgumentException,因此此处不建议使用try-catch块。这就是控制器中使用@NotNull的原因。