try {
Scanner scan = new Scanner(new File("filnavn"));
String navn = scan.next();
String yrke = scan.next();
} catch (FileNotFoundException e) {
System.out.println("Filen filnavn ble ikke funnet!");
System.exit(-1);
} catch (NoSuchElementException e) {
System.err.println("Filen er ikke komplett!");
e.printStackTrace();
System.exit(-1);
}
try {
code
}
catch and finally blocks . . .
Dette kalles chained exceptions.
private List<Integer> list;
private static final int SIZE = 10;
public void writeList() {
PrintWriter out = null;
try {
System.out.println("Entered try statement");
out = new PrintWriter(new FileWriter("OutFile.txt"));
for (int i = 0; i < SIZE; i++) {
out.println("Value at: " + i + " = " + list.get(i));
}
}
catch and finally blocks . . .
}
try {
code som kaster IndexOutOfBoundsException og IOException
} catch (IndexOutOfBoundsException e) {
System.err.println("IndexOutOfBoundsException: " + e.getMessage());
} catch (IOException e) {
System.err.println("Caught IOException: " + e.getMessage());
}
finally {
if (out != null) {
System.out.println("Closing PrintWriter");
out.close();
} else {
System.out.println("PrintWriter not open");
}
}
static String readFirstLineFromFile(String path) throws IOException {
try (BufferedReader br =
new BufferedReader(new FileReader(path))) {
return br.readLine();
}
}
public void writeList() {
PrintWriter out = null;
try {
System.out.println("Entering" + " try statement");
out = new PrintWriter(new FileWriter("OutFile.txt"));
for (int i = 0; i < SIZE; i++) {
out.println("Value at: " + i + " = " + list.get(i));
}
} catch (IndexOutOfBoundsException e) {
System.err.println("Caught IndexOutOfBoundsException: "
+ e.getMessage());
} catch (IOException e) {
System.err.println("Caught IOException: " + e.getMessage());
} finally {
if (out != null) {
System.out.println("Closing PrintWriter");
out.close();
}
else {
System.out.println("PrintWriter not open");
}
}
}
Brukes til å generere (kaste) et nytt unntak.
Alle unntak er subklasser av klassen Throwable. Dette gjør at vi kan si throw (new) Exception.
Istedet for å behandle et unntak kan man sende unntaket videre ut til neste steg i kallstakken. Da må metoden si throws Exception.
public Object pop() {
Object obj;
if (size == 0) {
throw new EmptyStackException();
}
obj = objectAt(size - 1);
setObjectAt(size - 1, null);
size--;
return obj;
}
throw krever bare et argument: et throwable objekt
Error, Exception og RuntimeException arver alle fra Throwable
public void writeList() {
PrintWriter out = new PrintWriter(new FileWriter("OutFile.txt"));
for (int i = 0; i < SIZE; i++) {
out.println("Value at: " + i + " = " + list.get(i));
}
out.close();
}
public void writeList() throws IOException, IndexOutOfBoundsException {
public void writeList() throws IOException {
public E next() {
checkForComodification();
if (nextIndex == size)
throw new NoSuchElementException();
lastReturned = next;
next = next.next;
nextIndex++;
return lastReturned.element;
public Scanner(File source) throws FileNotFoundException {
this((ReadableByteChannel)(new FileInputStream(source).getChannel()));
}
I Scanner sin konstruktør lages et nytt objekt av FileInputStream. Konstruktøren i dette objektet kaster et unntak. Scanner sin konstruktør kaster dette unntaket videre og vi må derfor behandle det når vi lager et nytt objekt av Scanner.
try {
Scanner scan = new Scanner(new File("filnavn"));
String navn = scan.next();
String yrke = scan.next();
} catch (FileNotFoundException e) {
System.out.println("Filen filnavn ble ikke funnet!");
System.exit(-1);
} catch (NoSuchElementException e) {
System.err.println("Filen er ikke komplett!");
e.printStackTrace();
System.exit(-1);
}
Hvis en klient kan innenfor rimelighetens grenser forventes å komme seg videre fra et unntak kaster vi en checked exception.
Hvis en klient ikke kan gjøre noe for å komme seg videre fra unntaket kaster vi en unchecked exception.
public class IkkeFlereElementerException extends Exception {
public IkkeFlereElementerException() {
}
public IkkeFlereElementerException(String melding) {
super(melding);
}
}
Alt om unntak finner dere her:
Det står også mye nyttig i dokumentasjonen: