Kort introduktion till undantag (exceptions)

Inledning

När ett program kör så kan olika typer av fel inträffa. Dels kan det vara fel som upptäcks av Java-maskinen och del fel som upptäcks eller åtminstone kan upptäckas av det egna programmet.

Exempel på fel som java upptäcker är att man har ett array-index utanför arrayens gränser, försöker använda punktoperatorn på en referens som är null, försöker göra ett tal av en sträng som inte går att tolka som tal eller försöker läsa från en fil som inte finns.

Exempel på fel som den egna koden kan upptäcka är att man sätter en cirkel-objekts radie till ett negativt värde eller att man försöker dra en lott ur ett tomt tombola-objekt.

Felen kan antingen beror på programmeraren (ett felaktigt program) eller på användaren (felaktiga indata eller felaktig användning).

Java har en generell mekanism för att hantera fel. Den används automatiskt av fel som javamaskinen upptäcker men den kan också med fördel användas för fel som programkoden kan upptäcka.

Anmärkning: fel är egentligen inte riktigt rätt ord - exceptionell händelse är en bättre benämning. Det behöver inte nödvändigtvis vara ett fel utan någon annan händelse som "stör" det normala flödet i programmet.

Exempel på användning för fel i egen kod

  1. Storage version 1
  2. Storage version 2
  3. Storage version 3
  4. Storage version 4 med felklassen StorageException
  5. Storage version 5

Deklaration av att ett undantag kan uppstå - throws

För vissa typer av fel gäller att om man inte fågar dem så måste de deklareras med throws i metodhuvudet.

Exempel:

public class C {
	public static void main(String[] args) throws NumberFormatException, FileNotFoundException {
		...
		foo();
		...
	}
	
	public static void foo() throws FileNotFoundException {

	    ...

	}
}

Om något av undantagen NumberFormatException eller FileNotFoundException inträffar så avbryts programmet. Programmet skulle också kunna fånga felen på samma sätt som görs i Storage version 5

Tillbaka