Может ли добавление ошибки «попробуй/поймай» с логикой кода

#java #try-catch

Вопрос:

У меня есть этот код, который извлекается по населению по городу:

 @GetMapping("/city")
  public ResponseEntity<List<CityDto>> getPopulationPerCity {
    List<CityDto> city= cityService.getPopulationPerCity(city);
    return return ResponseEntity.ok(city);
}
 

И то, что я сделал, было то, что я окружил его попыткой/уловкой, подобной этой, чтобы зарегистрировать, был ли запрос успешным или нет:

 @GetMapping("/city")
public ResponseEntity<List<CityDto>> getPopulationPerCity {

List<CityDto> city = null;
try {
city= cityService.getPopulationPerCity(city);
log.info("The city population request is successful")
}  catch (Exception e) {
log.info("The city population request is failed")
}
return ResponseEntity.ok(city);
 

Повлияет ли это каким-либо образом на логику, лежащую в основе?

Комментарии:

1. Нет, но это может повлиять на логику на переднем конце, если предположить, что они не обрабатывают нули

Ответ №1:

Прежде всего, вам нужно исправить проблемы с компиляцией, как показано ниже, вы дважды объявили город в методе:

 GetMapping("/city")
public ResponseEntity<List<CityDto>> getPopulationPerCity {

List<CityDto> city = null;
try {
city= cityService.getPopulationPerCity(city);
log.info("The city population request is successful")
}  catch (Exception e) {
log.info("The city population request is failed")
}
return ResponseEntity.ok(city);
}
 

Это не повлияет на логику этого метода, но если есть какой-то другой метод, который делает что-то особенное, если произойдет исключение, то это повлияет. И им нужно было бы скорее справиться с этим нулем.

Поэтому, если мы посмотрим только с точки зрения этого метода, то ответ будет ОТРИЦАТЕЛЬНЫМ, но если мы увидим общую картину, то ответ будет УТВЕРДИТЕЛЬНЫМ, это может повлиять на системную логику.

Ответ №2:

Ты Сказал:

И то, что я сделал, было то, что я окружил его попыткой/уловкой, подобной этой, чтобы зарегистрировать, был ли запрос успешным или нет:

Повлияет ли это каким-либо образом на логику, лежащую в основе?

Так что ответ-НЕТ.

Ответ №3:

Во-первых, я бы предложил удалить ResponseEntity<List<CityDto>> из возвращаемого типа. Вам, скорее всего, это не нужно. Весна справится с этим.

Чтобы ответить на ваш вопрос, в конкретном коде, который вы указали:

 @GetMapping("/city")
public ResponseEntity<List<CityDto>> getPopulationPerCity {

List<CityDto> city = null;
try {
List<CityDto> city= cityService.getPopulationPerCity(city);
log.info("The city population request is successful")
}  catch (Exception e) {
log.info("The city population request is failed")
}
return ResponseEntity.ok(city);
 

Это не сработает. Потому что вы из области действия city переменной. Если вы проверите свою попытку, вы увидите, что создаете другой список с таким же именем, но он будет внутри блока «Попытка», а не снаружи. Таким образом, полностью независимый от вашей городской службы, он вернется null . Или, лучше сказать, выдаст ошибку в вашей среде разработки из-за ее повторного объявления.

Что вы можете сделать, так это добавить оператор return внутри блока try и в конце метода просто вернуть пустой список. Это намного лучше, чем ноль.

Но общий ответ действительно пытается уловить логику воздействия, нет.