#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 и в конце метода просто вернуть пустой список. Это намного лучше, чем ноль.
Но общий ответ действительно пытается уловить логику воздействия, нет.