【发布时间】:2018-09-20 07:17:11
【问题描述】:
我有一个 DTO (OpeningHoursPeriodDTO) 和一个实体 (OpeningHoursPeriod),我想使用 ModelMapper 对其进行映射。 只要我在转换器方法中没有抛出异常,一切都会按预期正常工作。
这里是转换器的代码:
modelMapper
.createTypeMap(OpeningHoursPeriodDTO.class, OpeningHoursPeriod.class)
.setConverter(converter -> {
OpeningHoursPeriodDTO openingHoursPeriodDTO = converter.getSource();
if (openingHoursPeriodDTO == null) {
return null;
}
if (openingHoursPeriodDTO.getOpen() == null || openingHoursPeriodDTO.getClose() == null) {
throw new BadRequestException("Opening hours and closing hours must be present");
}
if (!Objects.equals(
openingHoursPeriodDTO.getOpen().getDay(),
openingHoursPeriodDTO.getClose().getDay())) {
throw new BadRequestException("Opening and close day for a period must be for the same day");
}
return OpeningHoursPeriod.builder()
.id(openingHoursPeriodDTO.getId())
.day(openingHoursPeriodDTO.getOpen().getDay())
.openTime(LocalTime.parse(openingHoursPeriodDTO.getOpen().getTime(), TIME_FORMATTER))
.closeTime(LocalTime.parse(openingHoursPeriodDTO.getClose().getTime(), TIME_FORMATTER))
.build();
});
问题是如果它碰巧抛出一个异常,我在我的 Spring Boot 应用程序中得到一个 500 状态码,尽管BadRequestException 的状态码应该是 400。
知道如何最好地处理此类转换器异常吗?
【问题讨论】:
标签: java spring-boot modelmapper