在运行程序时说删除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);
}
}
请在下面找到屏幕截图。这是运行应用程序时抛出的异常。
答案 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");
}