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());
}
}
}