У меня есть конечная точка в Spring Webflux (Java 20), которая получает строку UUID, и мне нужно проверить ее с помощью UUID.fromString. Если последний выдает исключение из-за неправильного формата строки, как можно перехватить и повторно создать исключение?
Это простейший фрагмент кода, показывающий проблему: я пытаюсь перехватить исключение IllegalArgumentException и вместо этого распространите его как `AssertionError.
public class Main {
public static void main(String[] args) {
Mono.just(UUID.fromString("123"))
.doOnError(IllegalArgumentException.class, e -> Mono.error(new AssertionError("")))
.subscribe();
}
}
Mono.just(UUID.fromString("123"))
.onErrorMap(IllegalArgumentException.class, e -> new AssertionError(""))
.subscribe();
Mono.just(UUID.fromString("123"))
.onErrorResume(e -> Mono.error(new AssertionError("hello")))
.subscribe();
Что бы я ни пытался, в результате всегда исключение IllegalArgumentException не перехватывается, а просто всплывает:
Exception in thread "main" java.lang.IllegalArgumentException: Invalid UUID string: 123
at java.base/java.util.UUID.fromString1(UUID.java:280)
at java.base/java.util.UUID.fromString(UUID.java:258)
at org.example.Main.main(Main.java:12)
Подробнее здесь: https://stackoverflow.com/questions/771 ... -exception