Paar Fragen zu Exceptions

java__neuling

Aktives Mitglied
Hallo,

ich habe ein paar Verständnisfragen zu Exceptions:

Habe hier folgende Methode:

Java:
public static int eingabeInt() throws NullPointerException{

	int ganzzahl;

	ganzzahl=Konsole.getInputInt("Bitte Ganzzahl eingeben = ");

	return ganzzahl;

}

Ich frage mich was dieser Ausdruck zu bedeuten hat:

Java:
throws NullPointerException

Mir ist schon klar, dass irgendwann mal aus irgend einen Grund eine Exeption geworfen wird aber wann wird diese dann geworgen?

Außerdem bin ich momentan der Meinung, dass das zu einer Exception immer auch ein try und catch gehört. In der gesamten Klasse bzw. in der gesamten Java-Datei exisitert aber kein Try bzw. catch.....

Kann jemand etwas Licht ins dunkle bringen? ???:L
DANKE!:toll:
 

tfa

Top Contributor
Mir ist schon klar, dass irgendwann mal aus irgend einen Grund eine Exeption geworfen wird aber wann wird diese dann geworgen?
Das muss man nicht unbedingt auf den ersten Blick erkennen können. In deiner Methode kann es nur sein, dass irgendwo innerhalb des getInputInt() eine solche Exception geworfen wird (ich nehme an "Konsole" ist eine Klasse). Dazu müsste man sich aber den Quelltext dieser Methode genauer ansehen.
Darüber hinaus ist NullPointerException eine unchecked Exception, d.h. es ist nicht notwendig, diese an der Methode zu deklarieren. Du könntest das throws also genauso gut weg lassen.

Außerdem bin ich momentan der Meinung, dass das zu einer Exception immer auch ein try und catch gehört. In der gesamten Klasse bzw. in der gesamten Java-Datei exisitert aber kein Try bzw. catch.....
Muss nicht unbedingt. Exceptions fängt man, wenn man igendwie auf sie reagieren kann. Wenn man das nicht tut, fliegen sie dem Aufrufen eben um die Ohren und das Programm spuckt eine Fehlermeldung aus.
 

java__neuling

Aktives Mitglied
Ich empfehle Dir folgenden FAQ Beitrag, der dürfte Dir die ein oder andere Frage bereits beantworten ;)

http://www.java-forum.org/java-faq-beitraege/103949-exception.html

erstmal Danke für die beiden Antworten! ;-)

Ich habe mir jetzt gerade den Link vom User "preachie" angeschaut.

Da steht drin, dass die NullPointerException, eine unchecked Exception ist.
Diese müssen nicht mit Catch and Try behandelt werden oder weitergeworfen werden.

Okay, soweit so gut. Das erklärt warum innerhalb meines Codes kein Try und kein Catch auftaucht! ;-)

Was ist jetzt aber nicht verstehe ist folgendes:

Der Link "beschreibt" die NullPointerException so:

Java:
public void methodeMitRuntimeException() {
    throw new NullPointerException();    // NullPointerException ist eine RuntimeException
}

In meinen Code steht die NullPointerException aber im Methodenkopf:

Java:
public static int eingabeInt() throws NullPointerException{

und es steht kein
Java:
new
davor?

warum ist das so? Wo ist der Unterschied?

Danke und Gruß!
 
G

Gast2

Gast
Code:
throws DeineException
deutet an, dass die Methode eine DeineException werfen kann. (steht nur am Methodenkopf)
Code:
throw new DeineException()
kannst du innerhalb einer Methode aufrufen um eine DeineException von hand zu werfen. (steht nur innerhalb der Methode)
 

preachie

Aktives Mitglied
Java:
public static int eingabeInt() throws NullPointerException{

sagt aus, dass die Methode einagebInt() eine NullPointerException werfen kann. Es bedeutet nicht, dass auch bei jedem Aufruf dieser Methode eine NullPointerException geworfen wird. Es signaliert dem Entwickler, wenn er diese Methode verwenden möchte, dass diese eine Exception von diesem Typ werfen kann und er entsprechend darauf reagieren sollte/muss.

Java:
    throw new NullPointerException();
erzeugt/wirft eine (neue) NullPointerException

Beachte auch, dass es einmal
Java:
throws
heißt und beim anderen
Java:
throw
 

java__neuling

Aktives Mitglied
Code:
throws DeineException
deutet an, dass die Methode eine DeineException werfen kann. (steht nur am Methodenkopf)
Code:
throw new DeineException()
kannst du innerhalb einer Methode aufrufen um eine DeineException von hand zu werfen. (steht nur innerhalb der Methode)



erstmal wieder bestne Dank für die schnelle Hilfe!

d.h. also wenn es innerhalb der methode steht wird die exception 100% geworfen, oder?!


könnt ihr mir sagen welchen sinn es hat bei einer eingabe methode eine nullpointer exception zu werden?!
 
G

Gast2

Gast
d.h. also wenn es innerhalb der methode steht wird die exception 100% geworfen, oder?!

Wenn irgendwo [c]throw SomeException("Bad things happen")[/c] steht, wird sie auch geworfen.
könnt ihr mir sagen welchen sinn es hat bei einer eingabe methode eine nullpointer exception zu werden?!

Wenig. Ich würde eher eine IllegalArguementException werfen wenn z.B. der Programmierer [c]null[/c] übergibt obwohl er das nicht darf. Eigentlich finde ich sollte man NullPointerExceptions gar nicht werfen. Der Grund für einen NPE ist in der Regel ein Programmierfehler der durch Testen und sorgfältiges Design vermieden werden kann.
 

java__neuling

Aktives Mitglied
okay danke!

verstehe!

Mittlerweile hat sich ein weiteres problem ergeben..... aber wir nähren uns langsam dem ende.... ;-)

Ich habe folgende Mehtide geschrieben

Java:
	public void setRadius(double r){

	if(r<0)
	{
		throw new IllegalModificationException("Fehler, der Kreisradius darf nicht negativ sein!");
	}
	else
	{
		radius = r;
	}

	}

Wenn ich kompeliere bekomme ich folgende Fehlermeldung:


test.java:104: unreported exception gdfp.geomfetrie.modefll4.IllegalModifi
cationException; must be caught or declared to be thrown
throw new IllegalModificationException("Fehler!");
^
1 error

geht mir langsam aufem sack...was mache ich den schon wieder falsch.
das catch-try dazu befindet sich in einer anderen klasse.....eben in der klasse in der die methode auch aufgerufen wird.....

DANKE!!!!
 
G

Gast2

Gast
Ich wäre zwar immer noch für eine IllegalArgumentException aber eine IllegalModificationException musst du "ankündigen".
Java:
public void setRadius(double r) throws IllegalModificationException{
...
}
 

java__neuling

Aktives Mitglied
erstmal wieder bestne Dank für die schnelle Hilfe!

d.h. also wenn es innerhalb der methode steht wird die exception 100% geworfen, oder?!


könnt ihr mir sagen welchen sinn es hat bei einer eingabe methode eine nullpointer exception zu werden?!

@fassy

DANKE hat funktioniert!

naja d.h. aber man sollte immer oben im kopf die exception datei reinschreiben und innerhalb de rmethode.

eine exception die nur innerhalb der methode steht kann ja anscheinend nie geworfen werden, oder?!
 

Michael...

Top Contributor
naja d.h. aber man sollte immer oben im kopf die exception datei reinschreiben und innerhalb de rmethode.

eine exception die nur innerhalb der methode steht kann ja anscheinend nie geworfen werden, oder?!
Nicht ganz, wenn innerhalb einer Methode eine Exception geworfen werden kann, muss das mittels
Code:
throws ...
am Methodenkopf "veröffentlicht" werden.

Oder mit anderen Worten: die Exception fliegt innerhalb der Methode, durch das
Code:
throws...
zeigst Du allen die diese Methode verwnden wollen: Achtung, hier könnte was schief gehen.
 
G

Gast2

Gast
Nicht ganz, wenn innerhalb einer Methode eine Exception geworfen werden kann, muss das mittels
Code:
throws ...
am Methodenkopf "veröffentlicht" werden.

Oder mit anderen Worten: die Exception fliegt innerhalb der Methode, durch das
Code:
throws...
zeigst Du allen die diese Methode verwnden wollen: Achtung, hier könnte was schief gehen.

Nebenbei weiß ich jetzt erst jetzt nach 3 Monate C# wie wertvoll das ist... :)

Es ist echt uncool gegen eine API zu programmieren wo einem alle Nase lang Exceptions um die Ohren fliegen können aber der Compiler einen nicht drauf hinweist. Das erhöht den Entwicklungs und Testaufwand um einiges. Mag sein das es besser wird wenn ich die .NET API bessser kenne - aber das kann es ja eigenltich nicht sein.
 

tfa

Top Contributor
Es ist echt uncool gegen eine API zu programmieren wo einem alle Nase lang Exceptions um die Ohren fliegen können aber der Compiler einen nicht drauf hinweist.
Im Grunde genommen ist es genau umgekehrt. APIs mit checked Exceptions sind fatal. In C# machen die das schon richtig (wie in allen anderen modernen OO-Sprachen, außer Java). Diese Diskussion hatten wir vor einiger Zeit erst. Such mal im Forum.

Das erhöht den Entwicklungs und Testaufwand um einiges.
Das ist nämlich das "Problem". Man muss testen. Das kann dir der Compiler nicht abnehmen.
 
G

Gast2

Gast
Erm....

Angenommen ich habe zwei Methoden:

Java:
public boolean connect() throws SQLException{
  ... do some stuff...
  throw new SQLException("Fatal error in connection");
}

und

Code:
public bool connect(){
   ... do some stuff ...
   throw new Exception("Fatal error in connection");
}

Wenn ich gegen die API im ersten Fall programmiere weis ich direkt das etwas schlimmes passieren könnte und werde drauf hingewiesen auf diese Ausnahme zu reagieren. Im zweiten Fall kann ich erstmal so vor mich hinprödeln, alles läuft in meinen Project. Sollte jetzt ein Problem beim connect() auftreten blubbert mir eine nicht gefangene Excpetion den ganzen stack hoch.

Also muss ich als Entwickler wissen: "Oh, bei connect() könnte es sein das ich die connection nicht aufbauen kann, also muss ich eine Ausnahmebehandlung hinzufügen."

Darauf werde ich bei Java direkt hingewiesen. Ich sehe da eigentlich nur Vorteile drin, keine Nachteile. Das einem das nicht das Tsten abnimmt ist klar. Aber es vereinfacht das Programmieren meiner Meinung nach.
 
M

maki

Gast
Also muss ich als Entwickler wissen: "Oh, bei connect() könnte es sein das ich die connection nicht aufbauen kann, also muss ich eine Ausnahmebehandlung hinzufügen."
Das musst du doch sowieso.

Das Problem ist, dass es eben immer mehr Exceptions zur Laufzeit geben kann, als zur Compilezeit bekannt sind.
Man nehme zB. die NPE, IllegalArguemntException, etc. pp.

Ich sehe da eigentlich nur Vorteile drin, keine Nachteile.
"Abstraction Lekage" wäre zB. ein riesen Nachteil, d.h. dass checked Exceptions die Kapselung brechen, zu sehen zB. in RMI mit RemoteExceptions.
Ein anderer bekannter Nachteil ist, dass man manchmal eben gar nicht auf Exception reagieren kann, aber dazu gezwungen wird, oder dass eien Exception eben nie auftreten kann, aber die deklariete throws BlaBlaERsception einen dazu zwingt, einen leeren Catch Block zu schreiben, zB.
Code:
        try {
            String hostname = InetAddress.getLocalHost().getHostName();
        } catch (final UnknownHostException ignore) {
            // impossible to get here, checked exceptions force the use of try/catch
        }
Davon gibt es noch mehr Beispiele in Java...

Alles in allem überwiegen die Nachteile der checked Exceptions gegen ein paar Vorteile, sehe das wie tfa.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Java ist / wird kostenpflichtig. Ein paar Fragen Java Basics - Anfänger-Themen 1
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
Azazel Ein paar Fragen zu Methodenaufrufen(java.awt) Java Basics - Anfänger-Themen 2
T Ein paar Fragen zu OOP und Java. Java Basics - Anfänger-Themen 16
K Java Anfänger und paar Fragen=D Java Basics - Anfänger-Themen 7
C Umsteiger hat noch ein paar Fragen Java Basics - Anfänger-Themen 11
StrikeTom Ein paar(2) Fragen zu throws und try + catch Java Basics - Anfänger-Themen 6
T ein paar fragen Java Basics - Anfänger-Themen 10
Antoras Ein paar theoretische Fragen Java Basics - Anfänger-Themen 19
A Primzahlen: ein paar offene Fragen Java Basics - Anfänger-Themen 2
A Paar Fragen zu Applet u.a. Java Basics - Anfänger-Themen 2
0x7F800000 Ein paar noob-fragen zu java ME Java Basics - Anfänger-Themen 5
G Threads brauche da gilfe für paar fragen Java Basics - Anfänger-Themen 5
S ein paar kleine Fragen Java Basics - Anfänger-Themen 4
N ein paar L&F Fragen Java Basics - Anfänger-Themen 7
S ein paar Fragen - mit KSKB Java Basics - Anfänger-Themen 16
P Erste Schritte Bitte ein paar Erklärungen zu meinem Code Java Basics - Anfänger-Themen 6
S Integer/Value-Paar in Prio-Queue ohne Comparator Java Basics - Anfänger-Themen 5
D Bild für ein paar Sekunden einblenden und wieder ausblenden Java Basics - Anfänger-Themen 1
M Paar Probleme mit 3 Klassen Java Basics - Anfänger-Themen 23
C Array - Ein paar Verständnisfragen Java Basics - Anfänger-Themen 9
K BufferedWriter schreibt die letzten paar Zeilen nicht Java Basics - Anfänger-Themen 5
I Ein paar Kleinigkeiten Java Basics - Anfänger-Themen 11
Luk10 Datentypen Werte-Paar Java Basics - Anfänger-Themen 4
B Paar kleine Grundsatzfragen zu Java Java Basics - Anfänger-Themen 5
Nicer ! Problem nach paar Bierchen erkannt aber nicht gebannt ! Java Basics - Anfänger-Themen 7
I Ein paar Syntaxfragen... Java Basics - Anfänger-Themen 3
D Arrays und paar Möglichkeiten mit denen Java Basics - Anfänger-Themen 3
G Brauche ein paar erklärungen zu Quelltext Java Basics - Anfänger-Themen 5
A paar bilder auf einmal Java Basics - Anfänger-Themen 3
R Strings und dazu ein paar methoden Java Basics - Anfänger-Themen 12
A taschenrechner mit radioButtons aber ein paar problemen Java Basics - Anfänger-Themen 5
V Könnt ihr mal über Paar antworten schauen(Hausaufgaben) Java Basics - Anfänger-Themen 7
G Hoffe jemand kann mir ein paar Tips geben:binärer Suchbaum Java Basics - Anfänger-Themen 3
R Noch ein paar Anfängerfragen. Java Basics - Anfänger-Themen 4
S Ein paar Anfängerfragen Java Basics - Anfänger-Themen 17
M Zeilenausgabe auf ein paar Zeichen begrenzen Java Basics - Anfänger-Themen 2
A Habt ihr ein paar ideen für Programme? Java Basics - Anfänger-Themen 8
G Doppelte (Paar) Werte in einem Vektor finden Java Basics - Anfänger-Themen 6
B Bräuchte ein paar Sachen für mein Clientprogramm! Java Basics - Anfänger-Themen 6
megachucky Suche ein paar gute Tutorials so wie dieses hier. Java Basics - Anfänger-Themen 4
P Bitte um ein paar Tipps! (Threads, Warten auf Ereignisse,.) Java Basics - Anfänger-Themen 2
G Ein paar Definitionsfragen Java Basics - Anfänger-Themen 4
B Paar richtige Anfängerfragen Java Basics - Anfänger-Themen 7
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
H Fragen zu Wrapperklassen Java Basics - Anfänger-Themen 29
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
A Bei VierGewinnt fragen ob man gegen CPU oder Menschen spielen will. Java Basics - Anfänger-Themen 7
A Bei VierGewinnt vorher fragen, ob man gegen den Computer spielen möchte oder gegeneinander. Java Basics - Anfänger-Themen 1
A Bei VierGewinnt fragen, ob man gegen den Computer spielen möchte oder gegeneinander Java Basics - Anfänger-Themen 1
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
E Bäume/ allgemeine Fragen Java Basics - Anfänger-Themen 21
O Falsche Antworten zu Fragen Java Basics - Anfänger-Themen 4
S Diverse Fragen vor Schulaufgabe ;) Java Basics - Anfänger-Themen 4
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B fragen zu Aufbau eines UML-Klassendiagramm Java Basics - Anfänger-Themen 1
C 3 Fragen rund um Klassenattribute Java Basics - Anfänger-Themen 8
L Erste Schritte Log4J Fragen Java Basics - Anfänger-Themen 5
NeoLexx Fragen zu diversen Elementen der Javabibliothek Java Basics - Anfänger-Themen 5
D Budget Manager fragen zur Umsetzung Java Basics - Anfänger-Themen 9
N Fragen zur Datenspeicherung Java Basics - Anfänger-Themen 45
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
CT9288 Fragen zu Java Java Basics - Anfänger-Themen 16
W Fragen zu Generics Java Basics - Anfänger-Themen 14
T ObjectInput/OutputStream Fragen zur Funktionsweise Java Basics - Anfänger-Themen 3
J Fragen zu einer Methode Java Basics - Anfänger-Themen 3
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
J Fragen zu Input/Output Java Basics - Anfänger-Themen 3
J Erste Schritte Oracle Tutorials zu Java 8 - Fragen dazu Java Basics - Anfänger-Themen 1
H Java Quereinsteiger Roadmap und Fragen Java Basics - Anfänger-Themen 29
H fragen Java Basics - Anfänger-Themen 15
M Samelsarium Grundlegender Fragen 2 Java Basics - Anfänger-Themen 9
M Sammelsarium an Grundlagen Grundlagen Fragen Java Basics - Anfänger-Themen 11
J Fragen zu synrchonized und kritischen Abschnitten Java Basics - Anfänger-Themen 5
S Fragen zu einem Rechentrainer Java Basics - Anfänger-Themen 2
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
J Wo kann man Fragen zu ireport stellen. Java Basics - Anfänger-Themen 0
M Fragen zum Anlegen und Benutzen von Listen Java Basics - Anfänger-Themen 9
D Fragen zur Klassen Java Basics - Anfänger-Themen 4
Aprendiendo Zwei Fragen und ein geerbtes "protected"-Attribut Java Basics - Anfänger-Themen 2
J Interface Fragen bezüglich "Sauberkeit" von Code Java Basics - Anfänger-Themen 5
D Objekte-Fragen Java Basics - Anfänger-Themen 1
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
K Zwei Fragen zu Graphics/Graphics2D Java Basics - Anfänger-Themen 5
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
S Erste Schritte Fragen zur For-Schleife Java Basics - Anfänger-Themen 9
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
C Fragen zum Spigot Plugin (1.8) Java Basics - Anfänger-Themen 6
J Fragen zu Exceptions Java Basics - Anfänger-Themen 24
N Quiz- Fragen zufällig anzeigen lassen Java Basics - Anfänger-Themen 7
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
L Viele Fragen zu den Grundlagen Java Basics - Anfänger-Themen 5
B Fragen zu ZIP-File Java Basics - Anfänger-Themen 9
L fragen zu arrays Java Basics - Anfänger-Themen 8
L Fragen zu selbstgeschriebenem Programm Java Basics - Anfänger-Themen 5
M Fragen zum Auslesen von HTML Seiten Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben