Zapisywanie wszystkich wyjątków które mogą być rzucone w funkcji

0

Zastanawiam się jak mogę przechwycić wszystkie wyjątki jakie mogą być wrzucone w danej metodzie i zapisać je do listy.
Przykład. Mam DAO a w nim metodę validate()

	public void validate(Object person) throws AppException {
	    if (person.getAge() < 18) {
	        throw new AppException("Too young");
        }
        
        if (person.getName() == null) {
            throw new AppException("Name cannot be empty");
        }

        if (!person.isNice()) {
            throw new AppException("Be nice!");
        }
    }

I teraz gdy sprawdzę Person bez imienia i w wieku 13 lat to dostanę tylko "Too young". W jaki sposób najlepiej przechwycić całą listę (w tym przypadku AppException("Too young") i AppException("Name cannot be empty"))? Pierwsza moja myśl to stworzenie czegoś w tym stylu.

	public void validate(Object person) throws AppException {
	    List<AppException> errorList = new ArrayList<>();
	    if (person.getAge() < 18) {
            errorList.add(new AppException("Too young)"));
        }

        if (person.getName() == null) {
            errorList.add(new AppException("Name cannot be empty"));
        }

        if (!person.isPerson()) {
            errorList.add(new AppException("Be nice!"));
        }
        
        if(errorList.isEmpty()) {
	        throw new AppException(errorList);
        }
    }

Macie może lepszy pomysł?

2

Źle do tego podchodzisz. Wyjątki, jak sama nazwa mówi, służą do obsługi sytuacji wyjątkowych, czyli takich, których normalnie się nie spodziewamy, a Ty wykorzystujesz je jako metodę sterowania aplikacją, co jest złą praktyką.

Zamiast wyrzucać wyjątki, stwórz strukturę zawierającą flagi błędów i ją po prostu zwróć, przecież Twoja metoda nic teraz nie zwraca. Po co Ci wyjątki w liście?

0

Dodam jeszcze że po rzuceniu wyjątku wychodzi się z metody (podobnie jak działa return). Więc gdy osoba ma mniej niż 18 lat dalsze rzeczy nie będą sprawdzane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1