exceptions

javaanf

Mitglied
hallo,
ich möchte gerne exceptions abfangen.
wo ist der unterschied zwischen getMessage() und printStackTrace()
[JAVA=42]
catch (IOException io) {
System.out.println(io.getMessage());
io.printStackTrace();
[/code]
 
ja, ums mit code auszudrücken:
Java:
    public String getMessage() {
        return detailMessage;
    }

Java:
    public void printStackTrace() {
        printStackTrace(System.err);
    }
    public void printStackTrace(PrintStream s) {
        synchronized (s) {
            s.println(this);
            StackTraceElement[] trace = getOurStackTrace();
            for (int i=0; i < trace.length; i++)
                s.println("\tat " + trace[i]);

            Throwable ourCause = getCause();
            if (ourCause != null)
                ourCause.printStackTraceAsCause(s, trace);
        }
    }
 
werden mit
[JAVA=42]
catch (Exception e) {}
[/code]

alle möglichen exceptions abgefangen die auftreten können?
Damit werden - definitionsgemäß - alle Exceptions abgefangen, nicht aber alle möglichen Fehler. Neben den Exceptions gibt nämlich auch noch die Errors.

//EDIT: sowas
Java:
catch (Exception e) {}
ist ganz böse; Exceptions sollten in i.d.R. behandelt werden; wenn sie in Ausnahmefällen nicht behandelt werden müssen (weil man z.B. ganz sicher sein kann, dass sie nicht auftreten können), dann sollte dies im - ansonsten leeren - Catch-Block als Kommentar auftauchen.
 
Zuletzt bearbeitet:
//EDIT: sowas
Java:
catch (Exception e) {}
ist ganz böse; Exceptions sollten in i.d.R. behandelt werden; wenn sie in Ausnahmefällen nicht behandelt werden müssen (weil man z.B. ganz sicher sein kann, dass sie nicht auftreten können), dann sollte dies im - ansonsten leeren - Catch-Block als Kommentar auftauchen.

zumindest sollte man da die Exception ausgeben ... sonst sucht man sich einen Wolf

Java:
try {
    // blabla
} catch(exception ex)
{
   System.out.println(ex.getMessage());
}
 
Es gibt die Klasse [c]Throwable[/c], von ihr erben [c]Exception[/c] und [c]Error[/c]. Errors sollten aber nicht abgefangen werden. Was machst du z.B. bei einem VirtualMachineError? Ausser natürlich, man will sie noch irgendwo speziell hinloggen o.ä. - danach unbedingt das Programm abschiessen lassen 😉
 

Zurück
Oben