Zaczynam nowy projekt. Na razie napisałem kilka klas, które będą podstawą działania systemu. Do obsługi błędów używam Either z Vavra (spodobał mi się ten pomysł, piszę tak pierwszy raz).
Na tą chwilę na pewno trzeba tu jeszcze ulepszyć obsługę błędów - i tu nie do końca mam pewność, jak to najlepiej zrobić.
Aktualnie zawsze zwracam błąd jako Stringa. Zazwyczaj tak:
Either<String, String> foo() {
try {
//
} catch (Exception e) {
e.printStackTrace();
return Either.left(e.getClass().getSimpleName() + " " + e.getMessage());
}
}
i tu wiem, że muszę zmienić zawartość błędu na coś bardziej opisowego. Byłoby fajnie zwrócić treść błędu, która nadaje się do wyświetlania użytkownikowi. Ale chcę też widzieć co dokładnie poszło nie tak. Może na potrzeby lewego Eithera stworzyć taką klasę:
class Error {
String userFriendlyMessage; //info dla użytkownika
Exception exception; //info dla mnie
}
i w kontrolerach zwracać użytkownikowi userFriendlyMessage
?
Staram się pisać czysto. Zapraszam do krytyki :)
https://github.com/Potat0x/PotaPaaS-Service/tree/master/src/main/java/pl/potat0x/potapaas/potapaasservice/util
https://github.com/Potat0x/PotaPaaS-Service/tree/master/src/test/java/pl/potat0x/potapaas/potapaasservice/util