Tworzenie własnych wyjątków

public class UserLogic {
private static final String STATUS = "VIP";

    public void showAge(int age) throws BadAgeException {
        if (age < 0) {
            throw new BadAgeException(age);
        }
    }

    public void status (String status) throws BadStatusException {
        if(!status.equals(STATUS)){
            throw new BadStatusException("Podałeś zły status");
        }
    }
}

Teraz przetestowanie czy nasz wyjątek działa poprawnie w metodzie main:

public static void main(String[] args) {

UserLogic userLogic = new UserLogic();
 try {
      userLogic.showAge(-2);
    } catch (BadAgeException e) {
       System.err.println(e.getMessage());
       e.printStackTrace();
    }

try {
  userLogic.status("CHILD");
} catch (BadStatusException e) {
   e.printStackTrace();
    }
}

Wynik z konsoli przedstawia że wszystko dział tak jak powinno. Otrzymujemy informacje co poszło nie tak oraz system mógł zaskoczyć swoje działanie.

Zakończenie programu po obsłużeniu wyjatków.

Dla porównania co się stanie gdy „wyrzucimy” wyjątek bez jego obsługi.

public static void main(String[] args) throws BadAgeException {

   User user = new User("EWA", -2);
    System.out.println(user.getName());
}

Wynik jaki został otrzymany na konsoli:

System przerwał swoje działanie podając tylko informacje co poszło nie tak.

1 thought on “Tworzenie własnych wyjątków”

  1. Deklarując własne wyjątki best practice mówi, żeby robić to rozszerzając RuntimeException – te wyjątki nie wymuszają opakowywania kodu/metod, które je rzucają w try-catch, pozwalają na obsługę wyjątków tam chce chcesz a nie tam gdzie używasz metody. Dlatego w nowszych bibliotekach/frameworkach (np Spring) baaardzo rzadko spotyka się wyjątki typu checked.

Leave a Comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *