Schlechter Stil beim Exception Handling

sh33p

Bekanntes Mitglied
Java:
import java.io.*;
public class Blablubb {

  public static void main(String[] args) {
    String fn = "xyz.txt";
  FileInputStream input = null;
  try {
    input = new FileInputStream(fn);
    System.out.println("\nDatei " + fn + " geoeffnet!");
    int aValue = 0;
    while (true) {
      aValue = input.read();
      if (aValue == -1 ) {
        System.out.println("<EOF>");
        throw(new EOFException());   // Wenn beim Lesen aus einem Stream,das Ende erreicht wurde
      }
      else System.out.print((char)aValue);
    }
  }
  catch (IOException e) {}
  finally {
    if (input != null) {
      input.close();
      System.out.println("\nDatei " + fn + " geschlossen!");
    }
  }
  }
}

Ich wollte mal diskutieren was beim Exception Handling besonders schlechter Stil ist bzw. was man vermeiden sollte. Natürlich bezogen auf das Beispiel :D
 
B

bygones

Gast
erster Blick:

eine auftretende IOException wird verschluckt

das Ende einer Datei wird per Exception kommuniziert
 

VfL_Freak

Top Contributor
Moin,

was für Exception-Handling ???:L
Du handelst es doch gar nicht wirklich :lol:

Also statt
Java:
catch (IOException e) {}

minimal
Java:
catch (IOException e)
{
    e.printStackTrace();
}

Gruß
Klaus
 
Zuletzt bearbeitet:
G

Gelöschtes Mitglied 6946

Gast
Das catch kann man weglassen, wenn man die Ausnahme nicht behandeln will. Das finally kann auch ohne catch verwendet werden und sorgt dafür, dass der InputStream in jedem Fall geschlossen wird. An sich könnte man die Exception aber schon ausgeben, sollte dann aber entweder die EOFException gesondert fangen (und ignorieren) oder evtl. besser noch das EOF ohne Exception behandeln, denn in diesem Fall erscheint das irgendwie unnötig.
 

Cage Hunter

Aktives Mitglied
Ein besonders guter Stil beim Exception-Handling wäre wohl Exceptions allgemein zu vermeiden, da diese Speicher fressen und sowieso unschön sind.
An den Stellen wo sie unvermeidbar sind, jede Exception separat abfangen, um unterschiedlich reagieren zu können und beim Debugging den Suchaufwand zu verringern.
 

Illuvatar

Top Contributor
Hier mal eine etwas bessere Version: Wenn Fehler auftreten werden sie nicht verschluckt, außerdem werden Exceptions nicht für den Kontrollfluss verwendet.

Java:
import java.io.*;

public class Blablubb {

  public static void main(String[] args) {
    String fn = "xyz.txt";
    FileInputStream input = null;
    
    try {
      input = new FileInputStream(fn);
      System.out.println("Datei " + fn + " geoeffnet!");
      int aValue = 0;
      while ((aValue = input.read()) != -1) {
        System.out.print((char)aValue);
      }
      System.out.println("<EOF>");
      
    } catch (FileNotFoundException e) {
      System.out.println("Datei nicht gefunden: " + fn);
    } catch (IOException e) {
      System.out.println("Fehler:");
      e.printStackTrace();
      
    } finally {
      if (input != null) {
        try {
          input.close();
          System.out.println("\nDatei " + fn + " geschlossen!");
        } catch (IOException e) {
          System.out.println("Fehler:");
          e.printStackTrace();
        }
      }
    }
  }
  
}
 

Wortraum

Bekanntes Mitglied
Ausnahmen dienen nicht dazu, die Logik eines Programmes zu steuern. Wenn Du also sowieso EOF erkennst, ist es unnötig und schlecht, das auch noch als Ausnahme zu behandeln und auf diese Ausnahme zu reagieren.

Java:
  try {
    input = new FileInputStream(fn);
    System.out.println("\nDatei " + fn + " geoeffnet!");
    int aValue;
    while ((aValue = input.read()) != -1) {
      System.out.print((char)aValue);
    }
    System.out.println("<EOF>");
  } catch (IOException e) {
    e.printStackTrace();
  } finally {
    if (input != null) {
      input.close();
      System.out.println("\nDatei " + fn + " geschlossen!");
    }
  }

Edit: Hm, vier Stunden zu langsam. Das gibt mir jetzt schon zu denken. ;)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Vererbung Schlechter Stil? Java Basics - Anfänger-Themen 10
S Unbeschaeftigten Thread in einer Schleife schlafen legen? Schlechter Stil? Java Basics - Anfänger-Themen 7
H schlechter objektorientierter stil Java Basics - Anfänger-Themen 6
berserkerdq2 Lange Variablennamen schlechter Programmierstyle? Java Basics - Anfänger-Themen 4
U Methoden Code Quality und Stil Java Basics - Anfänger-Themen 5
kaoZ Stil ? - ....Nein nicht das Ende des Besens ^^ Java Basics - Anfänger-Themen 11
B Grundsätzliche Klassen-Struktur/Stil Java Basics - Anfänger-Themen 12
S Mein Code is unübersichtlich - besseren Stil Java Basics - Anfänger-Themen 6
J Getter und Setter auch intern benutzen - guter Stil? Java Basics - Anfänger-Themen 31
nabla Code Stil -- Eclipse Warnings Java Basics - Anfänger-Themen 9
H [Stil] Exceptions in der Klasse behandeln oder throwen? Java Basics - Anfänger-Themen 62
P DotComVersenken -Spiel im Schiffeversenken-Stil - erstellen- Komm jetzt nicht weiter. Java Basics - Anfänger-Themen 11
P Spiel im Schiffe-Versenken Stil, Problem mit Erstellung des zweidimensionalen ARRAYs Java Basics - Anfänger-Themen 7
S sauberer Stil von return Wert (try, catch, finally) Java Basics - Anfänger-Themen 9
hdi Programmier-Stil : Speicher vs. Quellcode Java Basics - Anfänger-Themen 67
U Vernünftige Strukturierung, Guter Stil,. Java Basics - Anfänger-Themen 12
K BufferedReader im Konstruktor // guter Stil ? Java Basics - Anfänger-Themen 2
F Zugriff auf Instanzvariablen, Frage zum guten Stil Java Basics - Anfänger-Themen 2
J Guter Stil der Java-Programmierung Java Basics - Anfänger-Themen 5
G Array mit Schleife durchlaufen - guter Stil? Java Basics - Anfänger-Themen 20
frau-u guter Stil - wie macht mans am Besten? Java Basics - Anfänger-Themen 8
Juelin jedit Fehler beim starten Java Basics - Anfänger-Themen 2
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
A Hilfe beim Lesen von Pfaden und Systemvariablen Java Basics - Anfänger-Themen 3
M Ausgabe beim Overloading Java Basics - Anfänger-Themen 3
W Null-Pointer Exception beim Programmstart Java Basics - Anfänger-Themen 8
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
M Nullpointer beim befüllen meiner Liste im Object Java Basics - Anfänger-Themen 3
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
I Projekte in IDE untereinander sharen / Probleme beim Build Java Basics - Anfänger-Themen 8
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
T DamagedFontException beim drucken Java Basics - Anfänger-Themen 3
Z SNAKE Schlange beim Aufheben von Essen verlängern Java Basics - Anfänger-Themen 4
Bugs Bunny Fehlerhafte Berechnung beim erneuten Durchlaufen der Schleife Java Basics - Anfänger-Themen 5
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
Fiedelbambu Prüfen von Komma stelle beim Taschenrechner Java Basics - Anfänger-Themen 5
B Objekte verschwinden beim Übersetzen Java Basics - Anfänger-Themen 5
L Beim Java Programmstart, mehrere Parameter über die Kommandozeile übergeben Java Basics - Anfänger-Themen 9
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
X Hilfe beim Übertragen in eine For-Schleife Java Basics - Anfänger-Themen 1
S Fehler beim Programm Java Basics - Anfänger-Themen 2
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
I InputStream beim zweiten Mal fehlerhaft Java Basics - Anfänger-Themen 10
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
cmn489 Werte beim Funktionsaufruf in ein Feld übertragen(falls dieses leer ist) Java Basics - Anfänger-Themen 1
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
O Methode in while-Schleife aufrufen geht nur beim ersten Mal Java Basics - Anfänger-Themen 2
pry bitte Hilfe beim Kreditrechner objektorientiert Java Basics - Anfänger-Themen 6
J Hilfe beim Label animieren Java Basics - Anfänger-Themen 1
Avalon Programmierstil beim Mocken Java Basics - Anfänger-Themen 45
Avalon NullPointerException beim Mocken Java Basics - Anfänger-Themen 6
J Hilfe beim verstehen Java Basics - Anfänger-Themen 3
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Compiler-Fehler Fehler beim Ausführen des Codes Java Basics - Anfänger-Themen 25
L Anfänger braucht Hilfe - Stecke beim Lernen fest Java Basics - Anfänger-Themen 10
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
Bluedaishi Hilfe beim erklären dieser Methode Java Basics - Anfänger-Themen 5
E Macht Java Rechenfehler beim Potenzieren und Mod? Java Basics - Anfänger-Themen 5
J Hilfe beim Programmieren Java Basics - Anfänger-Themen 5
C Fehler beim Speichern (Build projekt) Java Basics - Anfänger-Themen 42
S Endlosschleife beim Ausgeben einer LinkedList Java Basics - Anfänger-Themen 2
tom.j85 TicTacToe - probleme beim Casten Java Basics - Anfänger-Themen 6
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
Kirby.exe Fehler beim Ausgeben Java Basics - Anfänger-Themen 2
L Brauche Hilfe beim arbeiten mit Konstruktoren Java Basics - Anfänger-Themen 20
D Was tun gegen zu komplzierten Denken beim Programmieren Java Basics - Anfänger-Themen 27
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
J NullPointerException beim Klonnen eines Arayys und beim aufrufen einer Methode Java Basics - Anfänger-Themen 2
J Fehler beim generieren von 4 Zufallszahlen Zahl doppelt ist eigentlich ausgeschlossen Java Basics - Anfänger-Themen 9
L Kleine Hilfe beim Schreiben eines Programmes benötigt :D Java Basics - Anfänger-Themen 40
T Fehlermeldung beim Versuch, einen String einzulesen Java Basics - Anfänger-Themen 4
V Wie wiederhole ich eine for-Schleife beim erreichen eines Wertes Java Basics - Anfänger-Themen 9
W Hilfe beim Chat Programm Java Basics - Anfänger-Themen 14
D Beim Programmieren auf die Logisch einfache Lösung kommen. Java Basics - Anfänger-Themen 17
S IndexOutOfBoundsException beim hinzufügen eines Elements zu einer Liste Java Basics - Anfänger-Themen 11
R String index out of range: -1 beim Datei Parsen Java Basics - Anfänger-Themen 15
I Methoden List.contains() beim 2. Element = true Java Basics - Anfänger-Themen 1
B EJB und Arquillian - bekomme Nullpointer Exception beim Aufruf der EJB Klasse Java Basics - Anfänger-Themen 40
O Verwirrt beim Java Collection Framework aufruf! Java Basics - Anfänger-Themen 9
S switch case fängt beim letzten case an Java Basics - Anfänger-Themen 6
S Erste Schritte Hilfe beim lernen von Programmieren Java Basics - Anfänger-Themen 2
der_Schokomuffin Hilfe gesucht beim Thema Objekte übergeben! Java Basics - Anfänger-Themen 2
A Pendeltouren beim Savings erfahren "schummeln" in Ordnung? Java Basics - Anfänger-Themen 1
dapzoo Compiler-Fehler Beim Werte verteilen in Objektarray NullPointerException Java Basics - Anfänger-Themen 4
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
T Fehlermeldung beim Starten von FlashTool Java Basics - Anfänger-Themen 27
C Rekursives Backtracking beim Spiel Peg Java Basics - Anfänger-Themen 22

Ähnliche Java Themen

Neue Themen


Oben