2016-04-12 5 views
1

Ich versuche, eine Tätigkeit, die mein Professor für mein Informatikstudium abgeschlossen hat zugewiesen, und ich bin nicht ganz sicher, was er damit meint, schauen Nummer 4:In Bezug auf Erstellung einer eigenen Klasse Exception in Java

Hier enter image description here

ist das, was ich bisher:

package ExceptionsActivity; 

public class Exceptions { 

public static void f1(int x) throws XisFiveException{ 
    if (x == 5){ 
     throw new XisFiveException("X cannot be 5"); 
    } 
    else { 
     System.out.println("Success, x = "); 
    } 
} 

public static void f2_1(int x) throws XisFiveException{ 
    try { 
     f1(x); 
    } 
    catch (XisFiveException e) { 
     f1(x + 1); 
    } 
} 

public static void f2_2(int x) throws XisFiveException{ 

} 
public static void main(String[] args) { 

} 

} 

Wie man sehen kann ich die Methode f1 und f2_1 schrieb das ist, was Frage Nummer 2 ist zu fragen. Ich hatte vor, die Lösung für Frage vier in f2_2 zu setzen. Ich bin mir nicht ganz sicher, was ich für die Nummer 4 tun soll, und jeder Ratschlag, in welche Richtung ich mich bewegen sollte, würde sehr geschätzt werden. Vielen Dank für Ihre Zeit!

Antwort

2

Die Frage versucht, Ihnen zu helfen, die Ausnahmebehandlung zu verstehen. Sie haben eine Methode, die eine Ausnahme mit dem Namen f1 auslöst. Es gibt zwei Möglichkeiten, wie Methoden, die f1 aufrufen, damit umgehen können. Sie können es fangen oder sie können es zurückwerfen zu der Methode, die sie aufruft. Die erste sieht wie folgt aus:

//note that I have removed the "throws" from the method declaration 
public static void f2_1(int x) { 
    try { 
     f1(x); 
    } 
    catch (XisFiveException e) { 
     f1(x + 1); 
    } 
} 

Und die zweite sieht wie folgt aus:

public static void f2_2(int x) throws XisFiveException{ 
    f1(x); 
} 

Auch hier ist der Unterschied, dass man die Ausnahme mit einem Try-Catch-Block behandelt, und der andere geht einfach die Ausnahme bis zu welcher Methode auch immer es genannt wurde. Diese sollten Ihnen bei Ihrem Problem helfen, aber wie Ihr Professor sagte, ist es wichtig zu verstehen, wie Sie mit einer Ausnahme umgehen können.

+0

Vielen Dank für die Antwort! Eine Frage, warum haben Sie die Würfe von der Methodendeklaration gelöscht? In der Eclipse, wenn ich es entferne, kompiliert das f1 (x + 1) nicht mehr, es sagt "Unhandle-Ausnahme-Typ XisFiveException". Irgendwelche Eingaben dazu? Vielen Dank! – Biggytiny

+1

@ Biggytiny du hast Recht - die Würfe ist erforderlich, aber nicht für den ersten f1 (x) Anruf. Es wird für den zweiten Aufruf benötigt, f1 (x + 1). guter Fang. Das Wichtige an diesem Beispiel ist, dass es ein wenig verwirrend ist. Wenn Sie eine Ausnahme mit einem try-catch behandeln, müssen Sie normalerweise nicht deklarieren, dass Ihre Methode die Ausnahme auslöst. In diesem Fall tust du das aber, weil catch() die f1-Methode wieder aufruft – nhouser9

+0

Ah ich sehe Danke nochmal! – Biggytiny