Ga verder met de vorige oefening. De foutafhandeling wordt hier verder verfijnd.

Opdracht

Opmerking: geen enkel foutbericht heeft een punt achteraan. De "-tekens behoren niet tot het foutbericht.

Voorbeelden

>>> is_truck_overladen("MT;3343;2121;3911;nog iets")
Exception: Fout in splitsen lijn
>>> is_truck_overladen("MT;28d;117;3120")
Exception: Fout veld: Leeg gewicht  
>>> is_truck_overladen("MT;3348;3fout;3601")
Exception: Fout veld: Lading
>>> is_truck_overladen("MT;3348;3601;fout")
Exception: Fout veld: Max gewicht
>>> is_truck_overladen("MT;1000;5000;3000")
True
>>> is_truck_overladen("TR;1000;300")
False
>>> aantal_overladen("vervoer_met_fouten.csv")
Exception: 2 lijnen met fouten
>>> aantal_overladen("fout_bestand.csv")
Exception: fout_bestand.csv niet gevonden

Tips

Moet de functie is_truck_overladen een fout opgewerpen indien de lijn geen informatie bevat van een MT? . Nee! de functie geeft nog steeds False terug.
Kan ik alle fouten in de functie is_truck_overladen opvangen met één try - except - statement? Nee! De foutboodschap hangt af van welk veld de fout veroorzaakt. Je zal dus voor elk veld een try - except moeten toevoegen.
Hoe weet ik of de lijn het juiste aantal velden bevat? Twee mogelijkheden:
  • Gebruik count om het aantal ; te tellen.
  • Splits de lijn naar een lijst, en tel het aantal elementen in de lijst.
Hoe werp ik een fout op in een functie? Gebruik raise Exception("foutbericht") waarbij je het gevraagde foutbericht intypt.
Waar zet ik return True in de functie is_truck_overladen? Dit kan als laatste statement, nadat alle try-except-blokken zijn afgehandeld.
Moet in de functie aantal_overladen een tweede try-except blok toegevoegd worden? Ja! bij elke lijn die je controleert met de functie is_truck_overladen moet een eventuele fout opgevangen en verwerkt worden.
Hoe kan ik het aantal lijnen met fouten bepalen in de functie aantal_overladen? In het except blok, na controle van een lijn, verhoog je een "teller" met 1.
Hoe kan de functie aantal_overladen een eigen foutbericht opwerpen? Als er lijnen met fouten zijn (je hebt die geteld), dan werp je een eigen exceptie op met raise Exception("foutbericht") waarbij je het gevraagde foutbericht intypt.