Czy powinniśmy tworzyć konkretną klasę Exception
dla każdego typu jednostki?
Jeśli osoby dzwoniące z Twojego kodu mogą w uzasadniony sposób odzyskać dane po nieodnalezieniu definicji jednostki i skorzystają na możliwości przyjęcia innej strategii odzyskiwania na typ jednostki, to tak. W przeciwnym razie nie.
Czy możemy bezpiecznie używać leków generycznych? Podobnie jak ta klasa NotFoundException rozszerza wyjątek, a następnie konstruktor dba o zadeklarowanie typu obiektu, z którym mamy do czynienia?
To nie pomoże dzwoniącym twojego kodu zmienić typu jednostki związanej z awarią.
Nawet jeśli zdefiniować typ wyjątku MyParameterizedException<T>
następnie z powodu typu skasowaniem, rozmówca nie może zrobić
try {
callYourCode();
} catch (MyParameterizedException<TypeA> ex) {
// some handling code
} catch (MyParameterizedException<TypeB> ex) {
// some different handling code for type b
}
bo z typu skasowaniem wygląda
try {
callYourCode();
} catch (MyParameterizedException ex) {
// some handling code
} catch (MyParameterizedException ex) {
// some different handling code for type b
}
i drugiego bloku catch
gdyby tworzyły być nieosiągalnym kodem, a więc zostanie on odrzucony podczas kompilacji przez javac
. Pierwszy blok catch zostałby wprowadzony dla typu b i wpisz jednostki (i wszelkie inne typy również).
Jeśli powinniśmy rzucać konkretny wyjątek, a nie przy użyciu rodzajowych, należy te wyjątki rozszerzyć lub wdrożyć NotFoundException
abstrakcyjne klasy lub interfejsu?
Jeśli osoby dzwoniące z twojego kodu byłyby zaskoczone, gdyby nie, to tak.
Jeśli osoby korzystające z twojego kodu odniosłyby korzyść z powodu awarii jednostek obsługiwanych przez kod obsługujący inne NotFoundException
s, to tak.
Jeśli osoby wywołujące Twój kod prawdopodobnie nie będą chciały mieć błędów lokalizowania definicji typu jednostki w taki sam sposób, jak w innych warunkach NotFound
, to nie.
Należy zauważyć, że EntityNotFoundException jest zduplikowaną nazwą dla javax.persistance.EntityNotFoundException. –