Exceptions

T

Timo123

Gast
Hi
ich habe eine Frage zu Exceptions. Mir ist noch nicht ganz klar, wann ich throw verwenden und wann nicht. Ich hab zwar gelesen, dass man runtime errors mit throw abfangen muss, aber was kann ich mir darunter vorstellen? Gibt es vlt eine einfache Merkregel?

Gruß Timo
 
T

Timo123

Gast
Ich hab den Artikel schon vorher gelesen, jedoch war es mir immer noch nicht klarer.
Was sind checked und was unchecked Exeptions?
Wann benutze ich throw, wann catch?

Gruß
 

faetzminator

Gesperrter Benutzer
Was sind checked und was unchecked Exeptions?
Checked Exceptions müssen (leider) immer gefangen oder weitergeworfen werden. Z.B. wenn du eine Datei auslesen willst, könntest du eine [c]FileNotFoundException[/c] bekommen.
Eine unchecked Exception ist immer von [c]RuntimeException[/c] abgeleitet (das ist die Regel des Compilers) und könnte z.B. eine [c]NullPointerException[/c] sein.
Wann benutze ich throw, wann catch?
Hab ich dir bereits vorhin schon beantwortet: throw/throws zum schmeissen, catch zum fangen...
 

AmunRa

Gesperrter Benutzer
throw benutzt du immer wenn du eine aufrufende MEthode informieren möchtest, dass ein Fehler passiert ist.

Der Unterschied zwischen check und uncheck is nicht so einfach zu verstehen.

Also sehr einfach checked exceptions sind solche exceptions bei der der Programmierer bereits zum Zeitpunkt der Programmierung wissen kann, dass ein Fehler auftreten könnte. (z.B. Eine FileNotFoundException Der Programmierer kannbereits zum Zeitpunkt der Programmierung wissen, dass ein File nicht existieren könnte, weil z.B der User nicht das Recht hat den Ordner zu betrachten)

Diese müssen daher schon im SourceCode mit einem try/catch block umschlossen sein.

Uncheckexception sind eigentlich RuntimeException. Diese weisen oft eigentlich auf einen Programmierfehler hin.
z.B der häufigste Fehler NullPointerException. RuntimeException sollte nicht auftreten, da sonst eben der Programmierer einen Fehler gemacht hat und daher der SourceCode geändert gehört.

Einfaches Beispiel:
Java:
int i = new Scanner(System.in).nextInt();
int[] a= //hier wird ein Array mit int werten gefüllt;
System.out.println("Ihre Wahl war: "+a[i]);

Hier kann nun z.B. eine ArrayIndexOutofBoundsException auftreten, da der USer jeden int eineben kann.
wenn nun diese Excpetion fliegt, zeigt es einen Programmierfehler an, da der Programmierer nicht geprüft hat ob der wert den der User eingibt korrekt ist.
 

faetzminator

Gesperrter Benutzer
Also sehr einfach checked exceptions sind solche exceptions bei der der Programmierer bereits zum Zeitpunkt der Programmierung wissen kann, dass ein Fehler auftreten könnte. (z.B. Eine FileNotFoundException Der Programmierer kannbereits zum Zeitpunkt der Programmierung wissen, dass ein File nicht existieren könnte, weil z.B der User nicht das Recht hat den Ordner zu betrachten)

Diese müssen daher schon im SourceCode mit einem try/catch block umschlossen sein.

Uncheckexception sind eigentlich RuntimeException. Diese weisen oft eigentlich auf einen Programmierfehler hin.
z.B der häufigste Fehler NullPointerException. RuntimeException sollte nicht auftreten, da sonst eben der Programmierer einen Fehler gemacht hat und daher der SourceCode geändert gehört.

Das hätten die von Sun (bzw. nun Oracle) wohl gerne. Ich verwende selbst nie checked Exceptions, da ich das Konzept dessen einfach grausam finde. Normalerweise soll das Programm bei einem Fehler entweder einfach abschmieren oder die Fehler an einem zentralen Punkt geloggt werden. Zumindest ist das bei mir so.
 

AmunRa

Gesperrter Benutzer
Du hast schon recht das das Konzept von CheckedExceptions wie es sich Sun/Oracle vorgestellt haben nicht wirklich ankommt, aber meine Beschreibung glaub ich beschreibt trozdem den Unterschied recht gut. Ich selbst nimm auch immer wenn ich eine eigene Excption-Klasse schreibe eine RuntimeExcepiton als Basis. nur muss halt dann die Doku recht gut sein, damit man auch weiß, dass diese Exception geworfen werden kann.
 

faetzminator

Gesperrter Benutzer
btw was ist denn so grausam an dem Konzept des Exception-Handlings?

Dass ich im Level 642 (vom Stack) mich nicht um eine Exception kümmern soll/will/muss, sondern das irgendwie in Level 20 gemacht werden soll. Wieso muss ich nun die Exception hundert Mal explizit weiterwerfen? Gibt sicher noch mehr Gründe dafür.
 

AmunRa

Gesperrter Benutzer
Zusätzlich weil manche Fehler einfach durch intelligente Programmierung nicht auftreten können, und warum sollte ich dann trozdem einen Try/catch Block machen?
 

faetzminator

Gesperrter Benutzer
Hab gerade noch ein Beispiel gefunden - sozusagen das Pendant zu AmunRas Idee: Was ist, wenn in einem Interface (oder einem sonstigen Supertyp) eine Methode abgeleitet werden soll, welche plötzlich eine Checked Exception weiterleiten muss?
Java:
interface I {
    void read();
}

class A implements I {
    public void read() throws FileNotFoundException {
        new FileReader(new File(""));
    }
}
Das hier kompiliert nicht. Ich würde es daher so lösen:
Java:
class A implements I {
    public void read() {
        try {
            new FileReader(new File(""));
        }
        catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        }
    }
}
Uncool...!
 

jgh

Top Contributor
Dass ich im Level 642 (vom Stack) mich nicht um eine Exception kümmern soll/will/muss, sondern das irgendwie in Level 20 gemacht werden soll. Wieso muss ich nun die Exception hundert Mal explizit weiterwerfen? Gibt sicher noch mehr Gründe dafür.

Also du musst sie ja nicht 100x eplizit weiterwerfen, catch und behandele sie...und wenn die Exceptions soviele Level nach oben geworfen werden, behaupte ich mal...sind auch andere Dinge im argen^^

Zusätzlich weil manche Fehler einfach durch intelligente Programmierung nicht auftreten können, und warum sollte ich dann trozdem einen Try/catch Block machen?
mag angehen...aber dann tut es auch nicht weh, einmal gleich einen catch-Block zu schreiben und nur den nicht mögliche ExceptionsStackTrace ausgeben zu müssen.

ich will mich ja auch nicht wieder so weit aus dem Fenster lehnen, wenn die Personen die mehr Erfahrung haben sagen, dass Exceptions schlecht sind, würde ich nur gerne wissen, warum?
Meine beschränkten Erfahrungen sagen mir, dass Exceptions eigentlich ganz nett zu programmieren sind. :)

Edit: zu faetzminator Beitrag:
ok, das ist natürlich nicht unbedingt schön, oder cool...aber who cares, das ist ja (hoffentlich) nicht der Regelfall?
 

AmunRa

Gesperrter Benutzer
nicht exceptions sind schlecht, sondern das konzept der checkedException ist fragwürdig. So ist j auch Java die einzige Programmiersprache die dies verwendet.

So weit ich mich erinnern kann gabs in der Plauderecke einen viele Seiten langen Thread zu diesem Thema, in dem schon viel darüber diskudiert wurde.

Ich würd auch sagen, dass wir diese diskussion hier beenden und wenn überhaupt dann wieder ein eigener Thread gestartet werden sollte, da diese Diskussion dem TO nicht hilft
 

tfa

Top Contributor
@TO: In den FAQ steht ein Beitrag zum Thema Exceptions.
@jgh: Dort werden auch einige Probleme mit checked Exceptions dargestellt.
 
T

Timo123

Gast
Heißt das, wenn ich selber eine Exception Unterklasse erstelle ist diese checked und normale Exceptions wie NullPointerException usw. sind unchecked?
 

eRaaaa

Top Contributor
Ja schon, aber die Standartexceptions sind alle unchecked?

Nur die:
Code:
    AnnotationTypeMismatchException, ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DataBindingException, DOMException, EmptyStackException, EnumConstantNotPresentException, EventException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IncompleteAnnotationException, IndexOutOfBoundsException, JMRuntimeException, LSException, MalformedParameterizedTypeException, MirroredTypeException, MirroredTypesException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NoSuchMechanismException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, RejectedExecutionException, SecurityException, SystemException, TypeConstraintException, TypeNotPresentException, UndeclaredThrowableException, UnknownAnnotationValueException, UnknownElementException, UnknownTypeException, UnmodifiableSetException, UnsupportedOperationException, WebServiceException

RuntimeException (Java Platform SE 6)

:bae:
 

faetzminator

Gesperrter Benutzer
Ja schon, aber die Standartexceptions sind alle unchecked?

Was heisst "Standardexception"? Alle in der J2SE API? Oben wurde doch bereits eine [c]FileNotFoundException[/c] als checked Beispiel genannt... Hier vollständigkeitshalber noch die Liste der checked Exceptions (in Java 6) :D :bae:
Code:
AclNotFoundException, ActivationException, AlreadyBoundException, ApplicationException, AWTException, BackingStoreException, BadAttributeValueExpException, BadBinaryOpValueExpException, BadLocationException, BadStringOperationException, BrokenBarrierException, CertificateException, ClassNotFoundException, CloneNotSupportedException, DataFormatException, DatatypeConfigurationException, DestroyFailedException, ExecutionException, ExpandVetoException, FontFormatException, GeneralSecurityException, GSSException, IllegalAccessException, IllegalClassFormatException, InstantiationException, InterruptedException, IntrospectionException, InvalidApplicationException, InvalidMidiDataException, InvalidPreferencesFormatException, InvalidTargetObjectTypeException, InvocationTargetException, IOException, JAXBException, JMException, KeySelectorException, LastOwnerException, LineUnavailableException, MarshalException, MidiUnavailableException, MimeTypeParseException, MimeTypeParseException, NamingException, NoninvertibleTransformException, NoSuchFieldException, NoSuchMethodException, NotBoundException, NotOwnerException, ParseException, ParserConfigurationException, PrinterException, PrintException, PrivilegedActionException, PropertyVetoException, RefreshFailedException, RemarshalException, SAXException, ScriptException, ServerNotActiveException, SOAPException, SQLException, TimeoutException, TooManyListenersException, TransformerException, TransformException, UnmodifiableClassException, UnsupportedAudioFileException, UnsupportedCallbackException, UnsupportedFlavorException, UnsupportedLookAndFeelException, URIReferenceException, URISyntaxException, UserException, XAException, XMLParseException, XMLSignatureException, XMLStreamException, XPathException
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Test auf Exceptions schreiben Java Basics - Anfänger-Themen 11
berserkerdq2 Habe zwei exceptions, welche ist ein Kommunikationsfehler und welche ein Ausgabefehler? Java Basics - Anfänger-Themen 4
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
C Exceptions identifizieren Java Basics - Anfänger-Themen 5
A Exceptions mit objektreferenzen Java Basics - Anfänger-Themen 4
A Exceptions und methods Java Basics - Anfänger-Themen 2
A Cannot find symbol bei exceptions Java Basics - Anfänger-Themen 2
A Exceptions und Packages Java Basics - Anfänger-Themen 6
B JUnit / Exceptions/ try-catch Java Basics - Anfänger-Themen 6
X Exceptions Benutzereingaben Java Basics - Anfänger-Themen 4
F Exceptions in Interfaces Java Basics - Anfänger-Themen 4
F Mehrere Exceptions in einem Catch-Block abfangen Java Basics - Anfänger-Themen 12
L Exceptions und Konten Java Basics - Anfänger-Themen 21
D Frage zu Exceptions Java Basics - Anfänger-Themen 8
I Wie programmiert man Exceptions? Java Basics - Anfänger-Themen 4
N Unterschied zwischen Checked und Unchecked Exceptions Java Basics - Anfänger-Themen 12
C Erste Schritte Exceptions nicht verstanden Java Basics - Anfänger-Themen 2
J Fragen zu Exceptions Java Basics - Anfänger-Themen 24
T Exceptions - ausgeführte Zeilen Java Basics - Anfänger-Themen 4
J Exceptions Java Basics - Anfänger-Themen 69
C Exceptions Java Basics - Anfänger-Themen 8
C Exceptions Java Basics - Anfänger-Themen 6
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
F Exceptions Java Basics - Anfänger-Themen 6
J Frage zum Thema Exceptions (Try/Catch) Java Basics - Anfänger-Themen 3
M "Exceptions abfragen" Java Basics - Anfänger-Themen 6
Farbenfroh Exceptions Anfänger - Finde Fehler nicht Java Basics - Anfänger-Themen 7
Z Catch & Exceptions Java Basics - Anfänger-Themen 4
N Compiler-Fehler Drei Exceptions in GUIHack für Dreiecke auf MoveButtons Java Basics - Anfänger-Themen 36
V Welche Exceptions müssen importiert werden? Java Basics - Anfänger-Themen 3
S Exceptions Java Basics - Anfänger-Themen 7
M Vererbung Problem Vererbung/Exceptions Java Basics - Anfänger-Themen 9
S Verschachtelte Exceptions - Übersicht verbessern Java Basics - Anfänger-Themen 2
J Eclipse Exceptions Java Basics - Anfänger-Themen 2
K Schleifen und Exceptions Java Basics - Anfänger-Themen 8
K Exceptions auslagern Java Basics - Anfänger-Themen 15
R NullPointer Exceptions Java Basics - Anfänger-Themen 3
F Erste Schritte Übung zu Exceptions Java Basics - Anfänger-Themen 24
R Exceptions (try/catch) Java Basics - Anfänger-Themen 63
H Int Exceptions Java Basics - Anfänger-Themen 12
M Exceptions per throws oder try Java Basics - Anfänger-Themen 4
M Compiler-Fehler Queue als ArrayList mit Exceptions Java Basics - Anfänger-Themen 3
T Exceptions in einer Klasse Java Basics - Anfänger-Themen 3
B Eigene Exceptions entwerfen Java Basics - Anfänger-Themen 3
H Methoden Überflüssige Exceptions Java Basics - Anfänger-Themen 20
C Exceptions Java Basics - Anfänger-Themen 14
1 While Schleife Exceptions Java Basics - Anfänger-Themen 6
I Erste Schritte Eigene Fehlermeldungen bei Exceptions Java Basics - Anfänger-Themen 19
D Frage zu Exceptions Java Basics - Anfänger-Themen 12
M Compiler-Fehler Exceptions lieber throwen oder direkt catchen? Java Basics - Anfänger-Themen 8
B Wie finde ich Exceptions? Java Basics - Anfänger-Themen 19
Dit_ Input/Output Alle Exceptions protokollieren Java Basics - Anfänger-Themen 9
T Exceptions Java Basics - Anfänger-Themen 12
J Standard Exceptions abfangen Java Basics - Anfänger-Themen 5
F Exceptions werfen oder catchen?? Java Basics - Anfänger-Themen 14
D Exceptions - Ausnahmebehandlung Java Basics - Anfänger-Themen 19
D Frage zu Exceptions und der import Anweisung Java Basics - Anfänger-Themen 12
J Paar Fragen zu Exceptions Java Basics - Anfänger-Themen 16
G Verständnisproblem: Exceptions Java Basics - Anfänger-Themen 17
S Exceptions bei push/pop in Stack Java Basics - Anfänger-Themen 8
C Exceptions beim Beenden Java Basics - Anfänger-Themen 2
C TimerTask und Exceptions Java Basics - Anfänger-Themen 5
E Klasse öffnen, mehrere Exceptions Java Basics - Anfänger-Themen 9
C Exceptions Java Basics - Anfänger-Themen 7
G 2 Exceptions in einer Methode Java Basics - Anfänger-Themen 3
firefexx Exceptions werfen Java Basics - Anfänger-Themen 5
0 Exceptions mehrfach fangbar? Java Basics - Anfänger-Themen 4
O Exceptions Java Basics - Anfänger-Themen 3
K Sinn eigener Exceptions Java Basics - Anfänger-Themen 11
H Diverse Exceptions - Troubleshooting Java Basics - Anfänger-Themen 3
J exceptions Java Basics - Anfänger-Themen 8
sc0p InterruptedExceptions und Exceptions - in Einem! Java Basics - Anfänger-Themen 5
M Frage zu Exceptions Java Basics - Anfänger-Themen 19
M Fragen zu Exceptions Java Basics - Anfänger-Themen 3
A Exception Verständnisfrage: Exceptions während, einer Statischenzuweisung abfangen Java Basics - Anfänger-Themen 10
D Exceptions werfen + beenden Java Basics - Anfänger-Themen 12
M Exceptions aus interface-Methoden Java Basics - Anfänger-Themen 2
S File.renameTo und Exceptions / Fehlermeldung Java Basics - Anfänger-Themen 2
B Exceptions in Liste sammeln? Java Basics - Anfänger-Themen 5
O Eigene Exceptions Java Basics - Anfänger-Themen 11
O "restliche" Exceptions fangen Java Basics - Anfänger-Themen 8
H [Stil] Exceptions in der Klasse behandeln oder throwen? Java Basics - Anfänger-Themen 62
T Problem beim Werfen und Fangen von Exceptions Java Basics - Anfänger-Themen 2
V Aktivitätsdiagramm / Exceptions Java Basics - Anfänger-Themen 5
V Exceptions Java Basics - Anfänger-Themen 6
K Frage zu Exceptions -> Logging Java Basics - Anfänger-Themen 6
M Eigene Fehlermeldung bei Exceptions? Java Basics - Anfänger-Themen 12
R JDom Exceptions Java Basics - Anfänger-Themen 4
R Datei einlesen mit Exceptions Java Basics - Anfänger-Themen 2
Daniel_L Verwendung von try und catch bei exceptions Java Basics - Anfänger-Themen 7
C Reflection Exceptions behandeln Java Basics - Anfänger-Themen 6
G Exceptions - spiegeln wir da nicht einen Spiegel im Spiegel? Java Basics - Anfänger-Themen 10
G Verschiedene Exceptions zu gleichem Block Java Basics - Anfänger-Themen 6
U Frage zu Exceptions Java Basics - Anfänger-Themen 5
mwildam Philosophiefrage zu Exceptions und Rückgabewerten Java Basics - Anfänger-Themen 6
D Static, final Objekte mit Exceptions im Konstruktor Java Basics - Anfänger-Themen 2
G Exceptions Java Basics - Anfänger-Themen 4
G ServerSocket: Exceptions und Timeout Probleme Java Basics - Anfänger-Themen 10
M Exceptions bei Textfeldern abfangen Java Basics - Anfänger-Themen 2
P Problem mit exceptions Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben