User Tools

Site Tools


linuxbog:java:java-exception-fangst
Linux - Friheden til at programmere i Java: Version 0.7.20040516 - 2020-12-31
forrige Kapitel 14. Undtagelser og køretidsfejl næste

14.2. At fange og håndtere undtagelser

Undtagelser kan fanges og håndteres. Det gøres ved at indkapsle den kritiske kode i en try-blok og behandle eventuelle undtagelser i en catch-blok:

try 
  { //...                     // programkode hvor der er en risiko//  //...                     // for at en undtagelse opstår// }
  catch ( //Undtagelsestype// u) ////// Undtagelsestype //er f.eks. Exception// { //...                     // kode som håndterer fejl af//  //...                     // typen// Undtagelsestype
  } //...                     // dette udføres både hvis ingen undtagelse opstod//  //...                     // og hvis der opstod fejl af typen// Undtagelsestype

Når programmet kører normalt, springes catch-blokken over. Hvis der opstår undtagelser i try-blokken, hoppes ned i catch-blokken, der håndterer fejlen, og derefter udføres koden efter catch.

Undtagelsestypen bestemmer, hvilke slags undtagelser der fanges.

Man kan fange alle slags ved at angive Exception eller en bestemt slags undtagelser, f.eks. ArrayIndexOutOfBoundsException.

Ser vi på vores Vector-eksempel igen, kunne det med undtagelseshåndtering se sådan ud:

import java.util.*;
public class SimpelUndtagelse2
{
  public static void main(String[] args)
  {
    System.out.println("Punkt A"); //// pkt. A//  //try//  //{// Vector v = new Vector();
      System.out.println("Punkt B"); //// pkt. B// v.elementAt(5);
      System.out.println("Punkt C"); //// pkt. C//  //}//  //catch (Exception u)//  //{//  //System.out.println("Der opstod en undtagelse!");//  //}// System.out.println("Punkt D"); //// pkt. D// }
}

Resultatet bliver

Punkt A
Punkt B
Der opstod en undtagelse!
Punkt D

Læg mærke til, at punkt C (der ligger i try-blokken efter, at undtagelsen opstod) ikke bliver udført. Punkt D (efter catch-blokken) bliver udført under alle omstændigheder.

14.2.1. Undtagelsesobjekter og deres stakspor

En undtagelse er ligesom alt andet i Java repræsenteret ved et objekt, og en reference til dette overføres som parameter til catch-blokken.

Objektet har nyttige informationer om fejlen. Metoden printStackTrace() udskriver et stakspor (eng.: stack trace), der beskriver de metodekald, der førte til, at undtagelsen opstod:

...
    catch (Exception u)
    {
      System.out.println("Der opstod en undtagelse!"); //u.printStackTrace()// ;
    }
    ...

Resultatet bliver

Punkt A
Punkt B
Der opstod en undtagelse!
java.lang.ArrayIndexOutOfBoundsException: 5 >= 0
        at java.util.Vector.elementAt(Vector.java:441)
        at SimpelUndtagelse2.main( //SimpelUndtagelse2.java:11// )
Punkt D

Staksporet er nyttigt, når man skal finde ud af, hvordan fejlen opstod. Det viser præcist, at undtagelsen opstod i elementAt() i Vector, som blev kaldt fra SimpelUndtagelse2.java i main()-metoden linje 11.


forrige hjem næste
Undtagelser og køretidsfejl op Undtagelser med tvungen håndtering
linuxbog/java/java-exception-fangst.txt · Last modified: by 127.0.0.1

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki

Brug af AI : Al tekst kán være uddrag af AI genereret tekst og kan være fejlbehæftet.
AI kan lave fejl og det kan mennesker også, men al tekst er gennemgået af et menneske for fejl, og personlig bias kan være tilføjet.