Spring Boot Rest API ResponseStatusException中的异常处理

时间:2020-02-16 04:14:32

标签: spring spring-boot spring-restcontroller spring-rest

在运行程序时说删除catch子句。

@RestController @RequestMapping(value = "/api/")
public class EmployeeController {

private EmployeeService employeeService;

@Autowired
public EmployeeController(EmployeeService employeeService) {
    this.employeeService = employeeService;
}

@GetMapping(value = "employee")
public List<Employee> getAllEmployee() {
    try {
        return employeeService.findAllEmployees();
    } catch (MyResourceNotFoundException ex) {
        throw new ResponseStatusException(
          HttpStatus.NOT_FOUND, "Employee not Found", ex);
    }
}

}

这是例外类

@ResponseStatus(code = HttpStatus.NOT_FOUND, reason = "Employee Not Found")
public class MyResourceNotFoundException extends Exception {
private static final long serialVersionUID = 1L;

public MyResourceNotFoundException(String errorMessage) {
    super(errorMessage);
}
}

请在下面找到屏幕截图。这是运行应用程序时抛出的异常。

enter image description here

1 个答案:

答案 0 :(得分:0)

我认为getAllEmployee方法中存在逻辑错误。因为,如果在employeeService.findAllEmployees()中没有雇员,则根据代码的逻辑,它应该返回大小为0的Employee列表。因此,我认为您的代码应如下所示:

@GetMapping(value = "employee")
public List<Employee> getAllEmployee() throws MyResourceNotFoundException {
    List<Employee> employees = employeeService.findAllEmployees();

    if (employees.size() > 0) return employees;
    else throw new MyResourceNotFoundException("Employee not Found");
}