Czy da się stworzyć własny wyjątek ?

0

Witam!

  try{
       rok = podaj.nextInt();
       }
       catch(java.util.InputMismatchException e){
           System.err.println("pimpek co ty odwalasz?");
       }

chodzi mi o to czy w funkcji catch mozna tak zdefiniowac wyjatek, aby np nie mozna bylo wpisac liczby mniejszej od 10?

0

Do definiowania warunków służy if/else

1

Da się, tworzysz po prostu normalną klasę, która dziedziczy po Exception i wtedy możesz rzucać obiekt tej klasy instrukcją throw i łapać go w catch. Dodam, że try ... catch to nie funkcja, tylko instrukcja przepływu sterowania.

Nie powinieneś jednak nadużywać wyjątków - służą one raczej do przerywania biegu programu, gdy np. jesteśmy w środku obliczeń i stwierdzamy, że to, co robimy, kompletnie nie ma sensu, np. z powodu wystąpienia niezależnych od nas czynników zewnętrznych.

W Twoim przypadku mamy do czynienia z weryfikacją poprawności danych i tutaj moim zdaniem dużo właściwsze jest obsłużenie tego bez używania wyjątków (co nie znaczy, że nie można).

1

@morgutrin

  1. Możesz zrobić swoją klasę extendującą Exception albo RuntimeException
  2. Możesz napisać swoją funkcję, która robi coś w stylu:
public int getYear(Scanner sc){
      int value = sc.nextInt();
      if (value < 10){
          throw new MyFancyException();
      }
      return value;
}

i voila, masz rzucony własny wyjątek, który teraz możesz łapać jakimś try..catch.
3. Niemniej zastanów się czy to jest miejsce na wyjątek, bo to jest zwykłe walidowanie inputu a nie obsługa sytuacji wyjątkowej.

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