luchob / softuni-music-db

Our workshop project for the course Spring Advanced 2021
3 stars 11 forks source link

Creating Custom Exceptions #5

Closed yavor300 closed 3 years ago

yavor300 commented 3 years ago

Лъчо, как е по-правилно да направя custom exception-ите: отделни грешки с имена {Entity}NotFoundException или една обща грешка например: ObjectNotFoundException?

Към момента съм избрал първия вариант, но обмислям дали вторият не е по-правилен?

Линк към проекта ми: https://github.com/yavor300/HealthBox

luchob commented 3 years ago

Здрасти, поздрави от планината :-) !

Абсолютно съм на мнение, че втория вариант е по-добър, с един Exception. Но това си е моето мнение! :-) Каква "добавена стойност" имат повече Exception-и? Да погледнем, например с какво се различават тези два хендлъра:

@ExceptionHandler({RoleNotFoundException.class})
    public ModelAndView handleRoleNotFoundException(RoleNotFoundException e) {
        ModelAndView modelAndView = new ModelAndView("error/error");
        modelAndView.addObject("message", e.getMessage());
        return modelAndView;
    }

    @ExceptionHandler({UserNotFoundException.class})
    public ModelAndView handleUserNotFoundException(UserNotFoundException e) {
        ModelAndView modelAndView = new ModelAndView("error/error");
        modelAndView.addObject("message", e.getMessage());
        return modelAndView;
    }

Като цяло добавянето на много Exception-и (особено ако са checked) рядко има голяма стойност и тя е само когато имаш различна логика за "recovery" от тези събития. При ObjectNotFoundExcpetion освен връщането на 404 на клиента не можеш да направиш нещо особено различно в зависимост обектите заради които е хвърлен Exception-a.

Поздрави, Л.