| Generierte Dokumentation der praktischen Arbeit von Simon Tiffert |

Dabei bekommt die Klasse ein Objekt des Typs Exception übergeben, welches dann genauer untersucht wird und eine hier definierte Ausgabe auf Datei bzw. im Debugmodus auch auf dem Bildschirm ausgegeben wird. Folgende Exceptions werden untersucht:
Definiert in Zeile 84 der Datei FehlerAusgabe.java.
Öffentliche Methoden | |
| FehlerAusgabe (BufferedWriter bw, Exception exception, String dateiName) | |
| Der Konstruktor sorgt dafür, dass der Fehler verarbeitet wird und das Attribut eingabeDateiName gesetzt wird. | |
Paketattribute | |
| String | eingabeDateiName |
| Name der Eingabedatei, um diese im Fehlerfall mit auszugeben. | |
| BufferedWriter | bw |
| BufferedWriter der Ausgabedatei. | |
| Exception | exception |
| Exception, die genauer untersucht wird. | |
Private Methoden | |
| void | printError () |
| Diese Funktion dient der Auswertung von Fehlern, die im Programmablauf passieren können. | |
| void | schreibeFehler (String s) |
| Diese Funktion schreibt den gefundenen Fehler in die Ausgabedatei und fängt einen eventuellen Fehler ab. | |
Private, statische Methoden | |
| void | hilfeAusgabe () |
| Diese Funktion erzeugt die Hilfeausgabe, die angezeigt wird, wenn das Programm falsch aufgerufen wurde oder wenn der Parameter -h eingegeben wurde. | |
|
||||||||||||||||
|
Der Konstruktor sorgt dafür, dass der Fehler verarbeitet wird und das Attribut eingabeDateiName gesetzt wird.
Definiert in Zeile 103 der Datei FehlerAusgabe.java. Benutzt main.ausgabe.FehlerAusgabe.eingabeDateiName und main.ausgabe.FehlerAusgabe.printError().
00107 {
00108 // BufferedWriter der Ausgabedatei
00109 this.bw = bw;
00110
00111 // Exception, die zu untersuchen ist
00112 this.exception = exception;
00113
00114 // Name der Eingabedatei, die im Fehlerfall ausgegeben wird
00115 eingabeDateiName = dateiName;
00116
00117 // Aufruf der Ausgabefunktion
00118 printError();
00119 }
|
Hier ist der Graph aller Aufrufe für diese Funktion:

|
|
Diese Funktion erzeugt die Hilfeausgabe, die angezeigt wird, wenn das Programm falsch aufgerufen wurde oder wenn der Parameter -h eingegeben wurde.
Definiert in Zeile 323 der Datei FehlerAusgabe.java. Wird benutzt von main.ausgabe.FehlerAusgabe.printError().
00324 {
00325 // Einfache formatierte Ausgabe
00326 System.out.println(
00327 "Aufruf:\n"
00328 + "java -jar programm.jar -d Datei [-h][-debug][-overwrite]"
00329 + "\n\n"
00330 + "-h zeigt diese Hilfe an\n"
00331 + "-debug die Fehlerausgabe wird zusätzlich auf dem"
00332 + " Bildschirm ausgeben\n"
00333 + "-overwrite eine vorhandene Ausgabedatei mit gleichem Namen "
00334 + " wird überschrieben\n");
00335 }
|
|
|
Diese Funktion dient der Auswertung von Fehlern, die im Programmablauf passieren können. Dabei wird eine Unterteilung in Fehlerklassen vorgenommen. Definiert in Zeile 127 der Datei FehlerAusgabe.java. Benutzt main.ausgabe.FehlerAusgabe.exception, main.ausgabe.FehlerAusgabe.hilfeAusgabe() und main.ausgabe.FehlerAusgabe.schreibeFehler(). Wird benutzt von main.ausgabe.FehlerAusgabe.FehlerAusgabe().
00128 {
00129 // Programmfehler
00130 if (exception instanceof UnexpectedCharacterException)
00131 {
00132 // Zeilenlänge überschritten
00133 schreibeFehler(
00134 "Zuviel Eingaben in Zeile " + exception.getMessage());
00135 }
00136 else if (exception instanceof UnexpectedLineException)
00137 {
00138 // Es treten noch Zeichen am Dateiende auf
00139 schreibeFehler(
00140 "Es folgen noch Zeichen nach der Eingabe in Zeile "
00141 + exception.getMessage());
00142 }
00143 else if (exception instanceof UnknownCharacterException)
00144 {
00145 // Es ist ein unbekanntes Zeichen in der Eingabe aufgetreten
00146 schreibeFehler(
00147 "Unbekanntes Zeichen in der Eingabe in Zeile "
00148 + exception.getMessage());
00149 }
00150 else if (exception instanceof TooFewCharactersException)
00151 {
00152 // Zuwenig Zeichen für die Matrix
00153 schreibeFehler(
00154 "Zu wenig Zeichen für Eingabe in Zeile "
00155 + exception.getMessage());
00156 }
00157 else if (exception instanceof TooFewSperrfelderException)
00158 {
00159 // Zuwenig Zeichen für die Matrix
00160 schreibeFehler("Es sind zu wenige Sperrfelder angegeben");
00161 }
00162 else if (exception instanceof WrongDimensionException)
00163 {
00164 // Falsche Dimensionsangabe für Matrix
00165 schreibeFehler("Falsche Dimensionsangaben für Matrix");
00166 }
00167 else if (exception instanceof OutOfMatrixException)
00168 {
00169 // Punkt außerhalb der Matrix definiert
00170 schreibeFehler(
00171 exception.getMessage() + " außerhalb der Matrix definiert");
00172 }
00173 else if (exception instanceof IsStartpunktException)
00174 {
00175 // Sperrfeld auf Startpunkt definiert
00176 schreibeFehler(
00177 "Sperrfeld auf Startpunkt"
00178 + exception.getMessage()
00179 + " definiert");
00180 }
00181 else if (exception instanceof IsSperrfeldException)
00182 {
00183 // Sperrfeld doppelt definiert
00184 schreibeFehler(
00185 "Sperrfeld " + exception.getMessage() + " doppelt definiert");
00186 }
00187 // Fehler, die nicht in Datei geschrieben werden können
00188 else if (exception instanceof FileNotFoundException)
00189 {
00190 // Die Eingabedatei wurde nicht gefunden
00191 System.out.println("Die Eingabedatei wurde nicht gefunden");
00192 }
00193 else if (exception instanceof OutputFileExistsException)
00194 {
00195 // Ausgabedatei existiert schon, somit muss die Fehlermeldung auf
00196 // dem Bildschirm erscheinen
00197 System.out.println(
00198 "Die Datei " + exception.getMessage() + " existiert schon");
00199 }
00200 else if (exception instanceof NoInputException)
00201 {
00202 System.out.println(
00203 "Es wurde kein Parameter für das Programm übergeben.");
00204 hilfeAusgabe();
00205 }
00206 else if (exception instanceof WrongParameterException)
00207 {
00208 System.out.println(exception.getMessage());
00209 hilfeAusgabe();
00210 }
00211 // Fehler die nicht in den vorherigen Routinen behandelt wurden
00212 else if (exception instanceof IOException)
00213 {
00214 // Fehler konnte nicht in die Datei geschrieben werden
00215 schreibeFehler(
00216 "Es ist ein Fehler bei der Ausgabe aufgetreten:"
00217 + exception.getMessage());
00218 }
00219 else
00220 {
00221 // Allgemeiner Fehler
00222 schreibeFehler(
00223 "Es ist ein Fehler aufgetreten: " + exception.getMessage());
00224 }
00225 }
|
Hier ist der Graph aller Aufrufe für diese Funktion:

|
|
Diese Funktion schreibt den gefundenen Fehler in die Ausgabedatei und fängt einen eventuellen Fehler ab. Zudem ist hier noch eine Debugausgabe implementiert, die den Fehler zusätzlich noch auf dem Bildschirm ausgibt
Definiert in Zeile 235 der Datei FehlerAusgabe.java. Benutzt main.ausgabe.FehlerAusgabe.bw und main.ausgabe.FehlerAusgabe.eingabeDateiName. Wird benutzt von main.ausgabe.FehlerAusgabe.printError().
00236 {
00237 // Hier wird die Ausgabe zusammengebaut
00238 StringBuffer eingabe = new StringBuffer("");
00239
00240 // Zeilenumbruch nach Betriebssystem anpassen
00241 String lineEnd = System.getProperty("line.separator");
00242
00243 // Falls dies scheitert, setze Standard Zeilenumbruch
00244 if (lineEnd == null)
00245 {
00246 lineEnd = "\n";
00247 }
00248
00249 // Tabulator
00250 String tabulator = " ";
00251
00252 // gib die Eingabedati nochmal aus, wenn es möglich ist
00253 try
00254 {
00255 // Öffne die Eingabedatei
00256 LineNumberReader line =
00257 new LineNumberReader(
00258 new FileReader(
00259 new File(eingabeDateiName)));
00260
00261 // Header vor Eingabedatei
00262 eingabe.append(lineEnd + tabulator + "Eingabedaten: " + lineEnd);
00263 eingabe.append(tabulator + "*************" + lineEnd);
00264
00265 // Lies die Datei aus und schreibe sie in den StringBuffer
00266 String zeile;
00267 while ((zeile = line.readLine()) != null)
00268 {
00269 // Sorge dafür, dass Zeilennummern richtig formatiert sind
00270 String whitespace = " ";
00271 if (line.getLineNumber() >= 10)
00272 {
00273 whitespace = " ";
00274 }
00275
00276 // Erstelle eine formatierte Zeile
00277 eingabe.append(
00278 whitespace
00279 + line.getLineNumber()
00280 + ":"
00281 + tabulator
00282 + zeile
00283 + lineEnd);
00284 }
00285 }
00286 // Fange die Exception
00287 catch (Exception e)
00288 {
00289 // Die Eingabedatei konnte nicht gelesen werden, was für manche
00290 // Fehler charakterisierend ist. Somit kann dieser Fall einfach
00291 // gefangen werden
00292 }
00293
00294 // Gib den Fehler aus
00295 try
00296 {
00297 // Ist der Debugmodus gesetzt, dann gib die Meldung
00298 // zusätzlich auf dem Bildschirm aus
00299 if (Main.debug)
00300 {
00301 System.out.println(eingabe + lineEnd + lineEnd);
00302 System.out.println(tabulator + s);
00303 }
00304 // Schreibe in die Ausgabedatei
00305 bw.write(eingabe + lineEnd + lineEnd);
00306 bw.write(tabulator + s);
00307 }
00308 // Das Schreiben auf Datei war nicht erfolgreich
00309 catch (Exception e)
00310 {
00311 // Gib die Fehlermeldung aus
00312 System.err.println(
00313 "Die Ausgabedatei konnte nicht beschrieben werden.");
00314 }
00315 }
|
|
|
BufferedWriter der Ausgabedatei.
Definiert in Zeile 90 der Datei FehlerAusgabe.java. Wird benutzt von main.ausgabe.FehlerAusgabe.schreibeFehler(). |
|
|
Name der Eingabedatei, um diese im Fehlerfall mit auszugeben.
Definiert in Zeile 87 der Datei FehlerAusgabe.java. Wird benutzt von main.ausgabe.FehlerAusgabe.FehlerAusgabe() und main.ausgabe.FehlerAusgabe.schreibeFehler(). |
|
|
Exception, die genauer untersucht wird.
Definiert in Zeile 93 der Datei FehlerAusgabe.java. Wird benutzt von main.ausgabe.FehlerAusgabe.printError(). |
|
|
|
| Documentation created with Doxygen 1.3.6 | Fri May 14 11:15:38 2004 |