Exceptions auslagern

kingpin000

Mitglied
Hallo,
ich würde gerne die Exceptions zu den Methoden, die ich in eine andere Klasse ausgelagert habe, mitdrüber nehmen, nur leider hab ich keine Ahnung was ich da beachten muss, damit meine main auf diese Exceptions wieder zugreifen kann.

Hab ihr Tipps für mich?
 
T

TryToHelp

Gast
Wieso sollte davon abstand genommen werden? Wenn es Business-Exceptions sind, macht es sin, diese auch selber zu erstellen und zu verwenden und nicht irgendwelchen unpassenden standart Exceptions zu werfen.
so z.B. bei einer Abbuchung, wenn das Konto leer ist, macht es keinen sinn eine eine nullPointerException oder ioException zu werfen, sondern eine eigene kontoLeerException ;-)
 
S

SlaterB

Gast
> Und was ist mit den Try-Catch Anweisungen? Bleiben die in der main oder können die auch in der Methodenklasse verwendet werden?

try/catch steht wie jede Codezeile grundsätzlich da wo sie sinnvoll ist,
verschieben bzw. bleiben sind da fragwürdige Begriffe, denkbar ist natürlich vieles
 

kingpin000

Mitglied
> Und was ist mit den Try-Catch Anweisungen? Bleiben die in der main oder können die auch in der Methodenklasse verwendet werden?

try/catch steht wie jede Codezeile grundsätzlich da wo sie sinnvoll ist,
verschieben bzw. bleiben sind da fragwürdige Begriffe, denkbar ist natürlich vieles

Wie soll ich vorgehen, wenn ich die Exception schon vorher von der Methode prüfe lasse möchte, bevor das Ergebnis ans main zurück geschickt wird?
 

kingpin000

Mitglied
Java:
@SuppressWarnings("serial")
class NotNaturalNumberException extends Exception
{
    public NotNaturalNumberException() {}    
    public NotNaturalNumberException(String s)
    {
        super(s);
    }
}

@SuppressWarnings("serial")
class ResultErrorException extends Exception
{
    public ResultErrorException() {}    
    public ResultErrorException(String s)
    {
        super(s);
    }
}


public class miniMathLib 
{
	
	public class MiniMath 
	{
		private double zahl;
		
		public boolean ganzZahl(double kommaZahl) throws NotNaturalNumberException
		{	
			try
			{
			zahl = kommaZahl;
			
			if (zahl/(int)zahl <= 1.0+1e-15 || zahl == 0.0)
				return true;
			throw new NotNaturalNumberException("keine natuerliche Zahl");
			}
			catch (NotNaturalNumberException exc)
			{
				System.out.println(exc.getMessage());
			}
		}
	
		public int fakultaet(double kommaZahl) throws ResultErrorException
		{
			try
			{
			zahl = kommaZahl;
			
			int fak = 1;
			int temp = 0;
			int overflow = 1;
			
			if (zahl < 0.0)
				throw new ResultErrorException("negative Zahlen nicht zulaessig");
						
			for (int i = 1; i<=(int)zahl; i++)
			{
				temp = fak;
				fak = fak*i;
				overflow = fak/i;
				if (temp != overflow)
					throw new ResultErrorException("Overflow! \n" +
							"Berechnung nur bis zur "+ (i-1) +".Fakultaet möglich");
			}
			return fak;
			}
			catch (ResultErrorException exc)
			{
				System.out.println(exc.getMessage());
			}
		}	
	}    	
}
 

Volvagia

Top Contributor
Jetzt throwst du die Exception direkt ins catch. Wird nur nicht gehen, da die Methode nicht umbedingt etwas zurückgeben wird.


Wieso sollte davon abstand genommen werden? Wenn es Business-Exceptions sind, macht es sin, diese auch selber zu erstellen und zu verwenden und nicht irgendwelchen unpassenden standart Exceptions zu werfen.
so z.B. bei einer Abbuchung, wenn das Konto leer ist, macht es keinen sinn eine eine nullPointerException oder ioException zu werfen, sondern eine eigene kontoLeerException ;-)
Wäre das keine Steuerung von Programmcode? Falls man vorhat eine Datei zu schreiben wird ja auch vorher geprüft ob der Pfad und die Datei existiert und gegebenfalls angelegt, und nicht wild drauf losgeschrieben.
 
S

SlaterB

Gast
in derselben Methode zu werfen und zu catchen ist normalerweise unnötig, außer man möchte paar Ebenen von verschachtelten Schleifen oder so (relativ unsauber) überspringen,
zusammen mit throws an der Methode-Deklaration wird es endgültig unsinnig

man kann nicht beantworten was du wo wie machen musst, wenn nicht vorher klar ist, was fachlich passieren soll,
wofür willst du die Exceptions einsetzen, oder ist es ein Selbstzweck, 'soll drin sein irgendwie..'?

der normalste Weg ist throws an der Methoden-Deklaration und natürlich ein Werten in der Methode, das heißt ja das 'throws',
ein Hinweis das Exceptions geworfen werden

ergo findet das try/catch außerhalb statt, aber nicht zum Spass, sondern weil es Sinn ergeben soll,
wenn nur ein Aufrufer da ist, der direkt abfängt und ausgibt und sonst nichts passiert,
dann könnte man praktisch auch auf die Exception verzichten, gleich im Fehlerfall etwas ausgeben und die Methode beenden,
kommt fast auf dasselbe hinaus,
freilich dann noch die Frage des Rückgabewertes, insofern Exception schon besser,
dann weiß der Aufrufer vom Fehler und reagiert eben doch anders, verwendet nicht den nicht vorhandenen Rückgabewert

also kurzer Sinn: try/catch aus der Methode raus, zum Aufrufer


-------

@Volvagia
> Wäre das keine Steuerung von Programmcode? Falls man vorhat eine Datei zu schreiben wird ja auch vorher geprüft ob der Pfad und die Datei existiert und gegebenfalls angelegt, und nicht wild drauf losgeschrieben.

Exceptions sind (edit: auch) Steuerung von Programmcode, richtig

und was spielt die Datei für eine Rolle? möchtest du mit IOException oder zumindest FileNotFoundException jetzt auch noch API-Exceptions obsolet machen (nach eigenen Exception-Klassen)? ;)

vieles geht ohne Exceptions, manche Programme oder tausende Zeilen Code hintereinander kommen ohne aus,
aber nicht alles läßt sich immer prüfen, immer gleich passend reagieren
 
Zuletzt bearbeitet von einem Moderator:

kingpin000

Mitglied
man kann nicht beantworten was du wo wie machen musst, wenn nicht vorher klar ist, was fachlich passieren soll,
wofür willst du die Exceptions einsetzen, oder ist es ein Selbstzweck, 'soll drin sein irgendwie..'?

Ich halt noch Anfänger und soll gemäß der Uni-Aufgabe die Exceptions in der Nebendatei definieren, aber von der main thrown lassen.
 
T

TryToHelp

Gast
Wäre das keine Steuerung von Programmcode? Falls man vorhat eine Datei zu schreiben wird ja auch vorher geprüft ob der Pfad und die Datei existiert und gegebenfalls angelegt, und nicht wild drauf losgeschrieben.
Ähm ja man kann das schon alles Testen, aber so verlagerst du die logik, und klar könnte ich boolen überweisung(betrag, konto) machen, aber wenn es mehr gründe für nicht funktionierende überweisung gibt, ist der boolean schon doof, jetzt kann ich natürlich int überweisung(betrag, konto) machen und dann mittels des rückgabewertes den fehler codieren, oder halt durch exceptions, das fehlverhalten senden, so z.B. kontoLeerException und kundeNichtVorhandenException,... was dann einfach zu händeln ist, alle erben von z.B. überweisungsException, nun kann mein Programm auf den Fehler eingehen und gesondert weioterarbeiten oder einfach bei allen überweisungsException sagen ist gescheitert,...
 
S

SlaterB

Gast
@kingpin000
exakt interpretieren kann man das leider nicht und du solltest versuchen, mit wem auch immer erst das Verständnis von Aufgaben abzuklären,
aber das ist in einem solchen Fall von außen natürlich leicht gesagt, ein kleines Dilemma

beim bester Tipp ist wie zuvor also try/catch beim Aufrufer, in der main-Methode
 

Volvagia

Top Contributor
Sollst du es in der Main throwen, in die Main throwen oder sollst du es über die Main throwen? Weiß nicht ob die Bezeichnungen so richtig sind, macht aber einen Unterschied.
Falls du es über die Main throwst fügst du einfach
Code:
throws NotNaturalNumberException
hinzu und entfernst die tries aus den Methoden. Falls du es in der Main throwst fügst du ein
Code:
throw new NotNaturalNumberException
dort hin, von wo aus es gethrowt werden soll. Falls du es in die Main throwen sollst so wie SlaterB sagte.

Ähm ja man kann das schon alles Testen, aber so verlagerst du die logik, und klar könnte ich boolen überweisung(betrag, konto) machen, aber wenn es mehr gründe für nicht funktionierende überweisung gibt, ist der boolean schon doof, jetzt kann ich natürlich int überweisung(betrag, konto) machen und dann mittels des rückgabewertes den fehler codieren, oder halt durch exceptions, das fehlverhalten senden, so z.B. kontoLeerException und kundeNichtVorhandenException,... was dann einfach zu händeln ist, alle erben von z.B. überweisungsException, nun kann mein Programm auf den Fehler eingehen und gesondert weioterarbeiten oder einfach bei allen überweisungsException sagen ist gescheitert,...
Das stimmt natürlich. Ich wollte mit dem Text keine Kritik ausüben, ich vergleiche nur meine Denkweise gerne mit anderen um Dinge aus unterschiedlichen Perspektiven zu sehen. :)
 
S

SlaterB

Gast
@kingpin000
die richtige Verwendung von Exceptions sollte bereits in Aufgabe 1.3 funktionieren,
in 2 sollst du nur die Methoden in eine andere Klasse schieben und die Definition der Exceptionklassen auch,
das ändert am Code innerhalb der Methoden gar nichts und beim Aufrufer der Methoden maximal das Objekt, an dem aufgerufen wird, zum try/catch ändert sich nichts,

wie sieht 1.3 bei dir aus?
 
Ä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
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
T Exceptions Java Basics - Anfänger-Themen 19
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