Sie sind auf Seite 1von 2

Gruppe B3 

Name:    SCHRÖDER  
Vorname:  ALEXEY 
Matrikel‐Nr.:  193971 
Informatik (B.Sc.)                 
Name:   SUKHAREVSKYY 
Vertiefung Programmieren (Java)            Vorname: 
YEVHENIY 
Übungsblatt 04  SS2008              Matrikel‐Nr.: 
194009 
   
  Name:   DERHO 
  Vorname: 
VICTOR 
Matrikel‐Nr.: 
194246 
 
Aufgabe 1. 
Geben Sie für die folgenden Throwable‐Klassen jeweils ein kurzes Beispiel in wenigen Codezeilen an, 
das die jeweilige Fehlermeldung erzeugt. Erläutern Sie kurz wann bzw. warum die Fehlermeldung 
auftritt.  
 
Fehlermeldung  Code Beispiel  Erläuterung 
  public class Exception {
Exception wird ausgelöst, wenn 
  public static void main (String ein mathematischer Fehler 
  args[]){
auftritt, z.B. beim Versuch eine 
ArithmeticException System.out.println(5/0); Zahl durch Null zu teilen oder 
  } den Logarithmus  einer 
  }  negativen Zahl zu berechnen.  
 
  public class Exception {
Exception wird geworfen, wenn 
  public static void main (String versucht wird ein Array mit 
  args[]){
einem ungültigen Index 
ArrayIndexOutOfBoundexException int a[] = new int[3]; anzusprechen, also wenn gilt: 
  System.out.println(a[3]); index > array.length(). 
  }
}
 
  public class Exception {
Exception wird geworfen, wenn 
  public static void main (String ein TypCast auf ein Objekt 
  args[]){
angewendet wird, während die 
  Object a = new Integer(1); Typen der jeweiligen Objekte 
ClassCastException System.out.println((String)a); inkompatibel sind. 
  }

 
 
  public class Exception {
Exception wird geworfen, wenn 
  public static void main (String versucht wird über eine 
  args[]){
Referenz, die den Wert = null 
  Object a = null; hat, ein Datenelement, Methode 
NullPointerException System.out.println(a.toString()); oder Array anzusprechen.  
  }

 
 
 
  Exception wird geworfen, wenn 
  public class Exception {
ein Stacküberlauf während der 
  public static void main (String Laufzeit auftritt. Exception wird 
  args[]){
invokeExc(1); von der JVM gesteuert.  
StackOverFlowError }
  public static int invokeExc(int a){
  return invokeExc(a+1);
}
  } 
 
 
 
 
 
 
 
 
 
Aufgabe 2. 
Die hier angegebene Klasse DotFilter soll als Filter Strom für Zeichen auf der Eingabeseite 
eingesetzt werden können und dabei jedes gelesene Komma durch einen Punkt ersetzen. Allerdings 
enthält diese Lösung fünf Fehler. 
 
Original Quelltext:  Fehler: 
import java.io.*;  
public class DotFilter extends Reader { //Es handelt sich um einen Filter Fehler 1: Signatur der Klasse 
public DotFilter( ) {//es muss ein Eingabestrom von Typ Reader Fehler 2: C’tor Fehler (DotFilter); 
übergeben werden. C’tor Fehler (super()); 
 
 
super( ); //Undefinierter C’tor  
 
}
public int read( ) { //Methode hinterlässt eine unbehandelte IOException Fehler 3: Signatur der Methode 
diese muss behandelt oder an den  
Aufrufer weitergereicht werden.  
int ch = super.read( );
Fehler 4: Operand Fehler  
if ( ch == "," ) //Typen sind inkompatibel int ≠ String, Operand „==“  
für den Typ String nicht definiert.  
ch = "."; //Typen sind inkompatibel int ≠ String Typ kann nicht Fehler 5: Kompatibilität Fehler 
konvertiert werden.
return ch;  
}  
// Die read Methode für einen Block  
// read(char[] buf, int off, int len) sei ebenfalls implementiert  
// und rufe read( ) für jedes Zeichen auf.
}  
 
 
 
Wie müsste der abgebildete Teil der Klasse korrekt aussehen? 
 
 
Abgewandelter Quelltext (ohne Fehler)   
import java.io.*;  
public class DotFilter extends FilterReader {
public DotFilter( Reader in ) {
super( in );
}

public int read( ) throws IOException {


int ch = super.read( );

if ( ch == ‘,’)

ch = ‘.’;

return ch;

}
// Die read Methode für einen Block
// read(char[] buf, int off, int len) sei ebenfalls implementiert
// und rufe read( ) für jedes Zeichen auf.
}