podnoszenie wyjatku z komentarzem

0

Utwórz klase Rakieta, zbudowana z pól: String nazwa i int wagaPaliwa, konstruktora inicjujacego pola oraz nastepujacych metod: zatankuj - ładujaca losowa ilosc paliwa, oraz start - rozpoczynajaca procedure startowa. W ramach kontroli przedstartowej metoda start sprawdzi stan paliwa i jezeli jest on mniejszy niz 1000, podniesiony zostanie wyjatek ZaMaloPaliwaException z komentarzem ’start anulowany - za mało paliwa’.

Czy zrobiłem to zadanie dobrze? Czy w klasie "RakietaTest" nie da się zrobić tego, któcej, aby wyrzucało wyjątek już po wywołaniu metody, bez dodawania try catch wewnątrz klasy?

Napisałem program tak:

class ZaMaloPaliwaException extends Exception {
	public ZaMaloPaliwaException (String string) {
		super(string);
	}
}

public class Rakieta {
	String nazwa;
	int wagaPaliwa;
	
	public Rakieta (String nazwa, int wagaPaliwa) {
		this.nazwa = nazwa;
		this.wagaPaliwa = wagaPaliwa;
	}
	
	public int zatankuj () {
		Random r = new Random();
		this.wagaPaliwa= r.nextInt(50000);
		System.out.println("tankuje");
		return this.wagaPaliwa;
	}
	
	void start () throws ZaMaloPaliwaException  {
		System.out.println("rozpoczynamy procedure startowa!");
		
		if (this.wagaPaliwa > 1000 ) 
			System.out.println("startujemy!");
		else 
			throw new ZaMaloPaliwaException("start anulowany - za mało paliwa");
		
		}
}

i teraz jak chcę wywołać to wszystko w innej klasie, to muszę dodawać try catch.


public class RakietaTest {
	public static void main (String [] args) throws ZaMaloPaliwaException {
		Rakieta r1 = new Rakieta ("Falcon", 15);

		try {
            r1.start();
        }
        catch(ZaMaloPaliwaException ex) {
            System.out.println(ex.getMessage());
        } 
		
		r1.zatankuj();
		
		try        {
            r1.start();
        }
        catch(ZaMaloPaliwaException ex) {
            System.out.println(ex.getMessage());
        } 
	}
}

0
  1. Zastanów się, czy jest sens żeby metoda zatankuj() zwracała cokolwiek?
  2. Nie masz okodowanej sytuacji, w której nawet po zatankowaniu będzie za mało paliwa, albo po kilku tankowaniach. Powinieneś użyć pętli.

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