我想在@RequestBody中接收枚举。当枚举的正确值输入到@RequestBody时,它工作得很好。但是,当给出一个不正确的值时,它给我错误状态400。
我想处理当一个错误的枚举值被给定时的异常。我做了一些研究,有些人说我可以通过像这样实现它来处理这些异常。
@Component
public class EventTypeConverter implements Converter<String, EventType> {
@Override
public EventType convert(String s) {
return EventType.valueOf(s.toUpperCase());
}
}
但是,这并没有改变什么。
我知道我可以做类似的事情,通过接收一个String,然后转换它,并从这里处理异常。但我想知道我是通过使用@ ExceptionHandlder(我认为这会变得非常简单和干净)还是其他任何干净和简单的方法来处理枚举转换异常。
public enum EvenType {
// enums...
@Getter
Character type;
EvenType(Character type) {
this.type = type;
}
public static EvenType of(String eventType) {
return EvenType.valueOf(eventType);
}
}
1条答案
按热度按时间flvlnr441#
你的例子没有提供你想要如何处理异常的确切信息,但是一般来说,如果你认为它更简洁,你可以像这样使用ExceptionHandler(使用int的简化例子)。
现在,如果您提供的值无法示例化为Integer句柄,则如下所示:
这并不是说这是最好的选择,也不是说你应该使用它,这主要取决于当异常发生时你实际上想实现什么。