Watersportclub met exceptions Flashcards

(5 cards)

1
Q

Voorkom dat er boten(een pedalo, motorboot of zeilboot een fout) worden aangemaakt met een negatieve prijs door een exception te gooien als dat gebeurt. De exception moet van het type InvalidPriceException zijn

A

Fout gooien bij negatieve prijs (✅)

Exceptionklasse zelf maken (✅)

Correcte foutmelding (✅)

try-catch gebruiken in main() voor nette foutafhandeling (✅)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
1
Q

setPrijsPerKwartier-methode:
Deze methode voert de controle uit.

Als een negatieve prijs wordt meegegeven, wordt InvalidPriceException gegooid.

Dit voorkomt dat een object met ongeldige prijs-instelling verder gebruikt wordt.

A

public void setPrijsPerKwartier(double prijsPerKwartier) {
if (prijsPerKwartier >= 0) {
this.prijsPerKwartier = prijsPerKwartier;
} else {
throw new InvalidPriceException(prijsPerKwartier);
}
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Zelfgemaakte, ongecontroleerde (unchecked) exception.
exception klasse
Goede foutmelding, duidelijk en bruikbaar in catch

A

public class InvalidPriceException extends RuntimeException {
public InvalidPriceException(double price) {
super(“Een ongeldige basisprijs van “ + price + “ werd opgegeven”);
}
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

IN DE MAIN KLASSE
Elke boot wordt aangemaakt in een try-catch-blok. Bij een negatieve prijs gooit setPrijsPerKwartier een InvalidPriceException, die wordt opgevangen zodat het programma niet crasht en een duidelijke foutmelding toont.

VB: Je probeert een Motorboot te maken met prijs -23.

De setPrijsPerKwartier-methode gooit een InvalidPriceException.

De catch-blok toont de foutmelding, zonder dat het programma crasht.

A

try {
Boot kanNiet = new Motorboot(“KanNiet”, -23, true, true);
System.out.println(kanNiet.berekenPrijsPerUur());
} catch (InvalidPriceException e) {
System.out.println(e.getMessage());
System.out.println(“Motorboot kon niet worden aangemaakt.”);
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

🔍 Belangrijke controle:
Controleer of je in de constructors van Motorboot, Zeilboot en Pedalo wel effectief deze methode aanroept, bijvoorbeeld:

A

public Pedalo(String naam, double prijsPerKwartier) {
super(naam); // of iets vergelijkbaars
setPrijsPerKwartier(prijsPerKwartier); // deze lijn is cruciaal
}
Zonder deze lijn wordt de controle niet uitgevoerd en kan een negatieve prijs tóch nog sneaky binnenkomen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly