Throws und throw....

ar3z

Mitglied
Hi!
Ich habe ein kleines Problem....und zwar habe zwei Funktionen, ruft die eine die andere auf, soll bei auftreten eines Fehlers dieser an die aufrufende weitergegeben werden, und diese soll ihn "ignorieren"

Im Code sieht das ca. so aus:

Funktion1:

Java:
public void fkt1 {
try{
fkt2(3);
}
catch(Exception e){
e.printStackTrace();
}

Funktion2

Java:
public string fkt2 (int x) throws RuntimeException{
if(x=1) return bla;
if(x=2) return blubb;
else {
throw new RuntimeException("bla");
}
}

Das hier ist natürlich nicht der richtige Code, zeigt aber die Struktur....nun ist es aber so, dass die Exception in fkt2 nicht an fkt1 weitergegebn wird und dort angezeigt wird, aber das Programm nicht stoppt, sondern sie wird einfach in fkt2 ausgeführt und stoppt alles....

Danke schonmal für eure Hilfe :)
 

Ebenius

Top Contributor
Entschuldige: Ich habe den Text oben jetzt vier mal gelesen und verstehe ihn noch immer nicht. Versuch's mal bitte in kurzen Sätzen zu erklären. Was willst Du erreichen? Was hast Du erwartet? Was passiert statt dessen?

Ebenius
 

ar3z

Mitglied
naja es ist recht einfach ein paar worte zu entfernen, es aus dem Kontext zu reissen und dann zu behaupten es gäbe keinen Sinn...^^
aber ich gebe zu es sind sehr stark verschachtelte Sätze, die evtl erst nach ein paar Mal durchlesen Sinn geben.

Also:
Ich will erreichen:
-tritt in fkt2 die Exception auf (beim else) soll diese an fkt1 übergeben werden. Dort soll sie per .printstacktrace ausgegeben werden, ohne das komplette Programm zu stoppen. Das bewirkt .printstacktrace ja meines wissens.

Es passiert aber:
die Exception wird einfach in fkt2 abgehandelt und das Programm bricht an dieser Stelle ab. Obwohl ich eigtl. doch per "throws...." angebe, dass die Exception an die aufrufende Funktion übergeben wird...

Danke für eure Hilfe!!!
 

Ebenius

Top Contributor
Ohje. Jetzt weiß ich, warum ich Dich nicht verstehe.

Also
  1. [c]throws[/c] hat überhaupt nichts mit dem Exception-Fluss zu tun. Genau genommen ist es in Deinem Beispiel vollkommen nutzlos. Es gibt in Java zwei Sorten von Ausnahmen.
    • RuntimeException und Errors (bzw. deren Derivate). Diese Ausnahmen sind sogenannte ungeprüfte Ausnahmen (unchecked exceptions). Diese Ausnahmen können aus jeder Methode (od. Konstruktor) geworfen werden.
    • Alle anderen Ausnahmen: Die können nur dann aus einer Methode (od. einem Konstruktor) geworfen werden, wenn sie per [c]throws[/c] deklariert sind. Dafür sorgt der Compiler per Compile-Error, wenn ein [c]throws[/c]-Konstrukt zu irgendeiner checked Exception fehlt.
    Das hat mit Deinem Problem nichts zu tun, denn Deine Funktion 2 wirft eine unchecked Exception; [c]throws[/c] ist also wirkungslos.
    Ich will erreichen:
    -tritt in fkt2 die Exception auf (beim else) soll diese an fkt1 übergeben werden. Dort soll sie per .printstacktrace ausgegeben werden, ohne das komplette Programm zu stoppen.
    Genau das passiert auch.
  2. Deine Erklärung haut einfach nicht hin. In jedem Fall fällt die Exception (sofern die [c]throw new…[/c]-Zeile ausgeführt wird) an die aufrufende Funktion geworfen. Und in jedem Fall wird die in Funktion 2 geworfene RuntimeException in Funktion 1 abgefangen und behandelt. Du unterliegst also einem Beobachtungsfehler oder hast Dein Programm falsch erklärt; ich tippe auf ersteres.
  3. Deine Nomenklatur ist schwer zu verstehen. Exceptions werden nicht ausgeführt. Sie werden geworfen. [c]printStackTrace()[/c] hat nichts damit zu tun, dass die Exception das Programm nicht stoppt; das [c]catch[/c] fängt die Exception ab, egal, ob deren StackTrace ausgedruckt wird oder nicht.

Nicht ärgern, das wird schon noch. Aber ich bin gespannt, wo Dein eigentliches Problem liegt.

Ebenius
 
Zuletzt bearbeitet:

faetzminator

Gesperrter Benutzer
@Ebenius, @TO:
Gehen wir von folgendem Programm aus:
Java:
try {
    a();
    b();
    c();
} catch (FooException fooEx) {
    // ...
}
Wenn nun [c]b()[/c] eine Exception schmeisst, dann wird nicht das ganze Programm gestoppt, sondern der Try-Block beendet. D.h. dass das Programm durchaus weitergefürt wird, allerdings [c]c()[/c] nie aufgerufen wird. [c]a()[/c] wurde natürlich bereits normal aufgerufen. @TO: meinst du das?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
BATMAN_2008 Jackson adding additional fields to JSON throws java.util.concurrent.CompletionException: Java Basics - Anfänger-Themen 2
J Verständnisfrage zu throws neben Funktionen Java Basics - Anfänger-Themen 2
S throws bei Methoden Java Basics - Anfänger-Themen 4
H throws und try catch Java Basics - Anfänger-Themen 8
MiMa JavaDoc Exception @throws schlagen an Java Basics - Anfänger-Themen 4
M [JTable] getValue throws ArrayOutOfBoundException Java Basics - Anfänger-Themen 1
M Throws Anweisung innerhalb eines Methodenkopfes unklar Java Basics - Anfänger-Themen 4
M Exceptions per throws oder try Java Basics - Anfänger-Themen 4
F Exceptionbehandlung --> catch/throws Java Basics - Anfänger-Themen 11
StrikeTom Ein paar(2) Fragen zu throws und try + catch Java Basics - Anfänger-Themen 6
K PROBLEM mit throws Java Basics - Anfänger-Themen 11
M Ändert ein 'throws Exception' die Signatur einer Methode? Java Basics - Anfänger-Themen 3
C throws Exception Java Basics - Anfänger-Themen 2
J Exception weiterleiten mit throws Java Basics - Anfänger-Themen 2
J Java GUI Problem (throws.) Java Basics - Anfänger-Themen 3
kb statische methoden und throws exception Java Basics - Anfänger-Themen 2
S Exception is not compatible with throws clause in DefaultHan Java Basics - Anfänger-Themen 3
T Auf "throws" verzichten! Java Basics - Anfänger-Themen 11
E Methodendeklaration mit throws wird nich behandelt Java Basics - Anfänger-Themen 3
C Methodenaufruf mit throws IOException Java Basics - Anfänger-Themen 2
N Throw an Main Methode übergeben Java Basics - Anfänger-Themen 7
H Frage zu Throw Exception Java Basics - Anfänger-Themen 2
S Verwenden von throw Exception an der Funktion Java Basics - Anfänger-Themen 2
S Was bewirkt ganz genau throw hinter einem Funktionsnamen? Java Basics - Anfänger-Themen 14
H Try Catch Throw Exception Java Basics - Anfänger-Themen 1
D Throw Exception Java Basics - Anfänger-Themen 2
Z Compiler-Fehler Hilfe zu -> throw new IllegalArgumentException Java Basics - Anfänger-Themen 4
llabusch Exceotion.Handling Aufgabe mit "throw" Java Basics - Anfänger-Themen 13
M TimerTask => throw Exception Java Basics - Anfänger-Themen 5
K throw Java Basics - Anfänger-Themen 24
J Exception throw in Klassen Java Basics - Anfänger-Themen 8
C overridden method does not throw java.io.IOException Java Basics - Anfänger-Themen 4
E try-catch-throw Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben