Eigene Exception

Status
Nicht offen für weitere Antworten.
E

Ete

Gast
Hallo liebe Java Freunde ich habe leider ein kleines Problem!

Ich habe eine eigene Klasse für Exceptions geschrieben und die funktioniert prechtig.

In der Klasse "TagTest" wird ein String eingelesen, welcher ein Datum representieren soll.

Der String wird in einen primitiven Integerwert konvertiert,
mit dem anschließend der Wochentag berechnet wird.

Ich habe in besagter Klasse nun schon einige Exceptions abgefangen und bearbeitet!
Nun darf der String aber nur Integerwerte und den Punkt als Trennung besitzen.
(Bsp.: 01.11.1900)
Also keine Buchstaben anstatt einer Zahl (Bsp.: 23.A5.2000)!

Wenn ich nun eine try- Anweisung um die konvertierung (bei der Methode parseInt()) setze
und vergleiche ob der String ein Integerwert ist, werden die Variablen TT, MM und JJJJ nur in
der Schleife behandelt und nicht zur Berechnung weitergegeben!

Ich will also eine von java.lang geworfene NumberFormatException als eigene
UngueltigesDatumException behandeln.

Ich hoffe mir kann jemand helfen!!
Hier die Klassen:

UngueltigeDatumException.java:
Code:
class UngueltigesDatumException extends Exception {
	
	public UngueltigesDatumException() {
	}
	
	public UngueltigesDatumException(String e) { 
		super (e);	
	}		
	
}

TagTest.java:
Code:
import Prog1Tools.IOTools;				//EingabeTool laden
public class TagTest {					//Klasse wird erstellt
	
	
	public static void main(String[] args) {	//main- Methode zum ausfuehren starten
		
		
		String datum;
		System.out.println ("Geben Sie bitte ein gueltiges Datum ab dem 1. Januar 1601 ein"); //Eingabe
		datum = IOTools.readString ("Bitte geben Sie ein Datum ein:");		//Eingabe eines String als Datum
		

	try {
		if ( datum.length() < 9 ) {

		throw new UngueltigesDatumException("Das Datum muss das Format TT.MM.JJJJ besitzen!! Also 9 Zeichen!!");
		}
	}
	catch (UngueltigesDatumException i) {
		System.out.println("!!Eingabefehler!!");
		i.printStackTrace();
		System.exit(1);
	}	


		
		
			String tt = datum.substring(0, datum.length()-8);		//Tag- Teil des Datums wird ermittelt
		
			String mm = datum.substring(3, datum.length()-5);		//Monat- Teil des Datums wird ermittelt
		
			String jjjj = datum.substring(6, datum.length());		//Jahr- Teil des Datums wird ermittelt

	
		Integer T = new Integer(tt);						//Autoboxing des Strings als Integerobjekt

			int TT = Integer.parseInt(tt);					//Interpretieren des Integerobjekts als primitiven Datentypen
		Integer M = new Integer(mm);
			int MM = Integer.parseInt(mm);
		Integer J = new Integer(jjjj);
			int JJJJ = Integer.parseInt(jjjj);

	

		Tag d = new Tag(TT,MM,JJJJ);						//Uebergabe der Parameter an das Objekt der Klasse Tag
		


			String p = ".";
			String p1 = datum.substring(2);
			String p2 = datum.substring(5);

	

	boolean schaltjahr = (JJJJ%4==0 & JJJJ%100!=0) | JJJJ%400==0;
  	
	try {
		if( (TT<1) || (TT>31) || (MM<1) || (MM>12) || (JJJJ<1601) ){
		
		throw new UngueltigesDatumException("Es muss ein Datum ab dem 01.01.1601 sein!!");
		}
	}
	catch (UngueltigesDatumException e) {
		System.out.println("!!Eingabefehler!!");
		e.printStackTrace();
		System.exit(1);
	}
	
	try {
		if( (MM==2 && ((!schaltjahr && TT==29) || (TT==30) || (TT==31))) ){
		throw new UngueltigesDatumException("Dieses Jahr ist kein Schaltjahr! Demnach gibt es keinen 29. Februar");
		}
	}
	catch (UngueltigesDatumException f) {
		System.out.println("!!Eingabefehler!!");
		f.printStackTrace();
		System.exit(1);
	}

	try {
		if( (MM==4 && TT==31) || (MM==6 && TT==31) || (MM==9 && TT==31) ||
		    (MM==11 && TT==31) ){
		throw new UngueltigesDatumException("Die Monate April, Juni, September und November haben nur 30 Tage!!");
		}
	}
	catch (UngueltigesDatumException g) {
		System.out.println("!!Eingabefehler!!");
		g.printStackTrace();
		System.exit(1);
	}

	try {
		if( (p1!=p) || (p2!=p) ){
		
		throw new UngueltigesDatumException("Die Trennung muss durch . erfolgen!!");
		}
	}
	catch (UngueltigesDatumException h) {
		System.out.println("!!Eingabefehler!!");
		h.printStackTrace();
		System.exit(1);
	}

	
		System.out.println(d.toString());
		
	}
}
 

moormaster

Top Contributor
Ete hat gesagt.:
Wenn ich nun eine try- Anweisung um die konvertierung (bei der Methode parseInt()) setze
und vergleiche ob der String ein Integerwert ist, werden die Variablen TT, MM und JJJJ nur in
der Schleife behandelt und nicht zur Berechnung weitergegeben!

Wenn die Variablen auch ausserhalb des try Blocks zur Verfügung stehen sollen, dann musst du sie auch ausserhalb deklarieren.

Beispiel:
Code:
 int existertAusserhalb = -1;
 try
 {
   int existiertNurInnerhalb = 3;
   existiertAusserhalb = MethodeDieEineExceptionWirft("25");
 }
 catch (IrgendeineException e)
 {
  e.printStackTrace();
 }

 // die Variable "existiertAusserhalb" kann nun weiter verwendet werden

Ich will also eine von java.lang geworfene NumberFormatException als eigene
UngueltigesDatumException behandeln.

Du willst also, dass statt der NumberFormatException deine eigene Exception geworfen wird?
Dann fang doch die NumberFormatException ab und werf einfach deine eigene?

Code:
 try
 {
   int n = Integer.parseInt("bla24");
 }
 catch (NumberFormatException e)
 {
  throw new MeineException("Fehler bei Eingabe");
 }

Ich hoffe das war, was du gesucht hast... so ganz klar ist mir nicht, was genau dein Problem is ^^
 
E

Ete

Gast
Wenn ich um Zeile 36 bis 42 eine try- Anweisung setze und die Variable außerhalb deklariere hat sie ja nicht mehr den selben Wert den ich haben möchte.
Und wenn ich sie nicht außerhalb deklariere, streikt der Compiler und sagt, dass die Variablen nicht existieren
 

moormaster

Top Contributor
Ete hat gesagt.:
Wenn ich um Zeile 36 bis 42 eine try- Anweisung setze und die Variable außerhalb deklariere hat sie ja nicht mehr den selben Wert den ich haben möchte.
Und wenn ich sie nicht außerhalb deklariere, streikt der Compiler und sagt, dass die Variablen nicht existieren

Wieso nicht?

Code:
 int t;
 try
 {
  t = Integer.parseInt("24");
 }
 catch (...) {...}
 // wenn keine Exception geworfen wurde, dann hat t hier den Wert 24

Wo ändert sich da nun der Wert gegenüber des weglassens des try-Blocks?
 
E

Ete

Gast
TT, MM und JJJJ werden doch eingelesen und dann in Integerwerte konvertiert und wenn ich TT oder bei dir t außerhalb ohne zuweisung eines Wertes deklariere, meckert der Compiler beim Objekt "Tag" in Zeile 46, dass die Variable noch nicht inizialisiert wurde
 
S

SlaterB

Gast
Ete, poste doch einfach deinen Code statt so komische Diskussionen zu führen,

wenn dir jemand sagt, dass du eine Variable auch außerhalb definieren kannst,
was nützt es dann, das nicht zu tun oder nur für eine von zwei Variablen zu tun?
das ist doch kein sinnvolles Vorgehen

Code:
try {
  variable a = ..
  variable b = a;
} catch..

variable c = b;
geht natürlich nicht, da b im try/catch definiert ist und außerhalb nicht,
da brauch man sich nicht beschweren sondern definiert die benötigten Variablen außerhalb


Code:
variable a = ..

try {
  variable b = a;
} catch..

variable c = b;
macht natürlich keinen Sinn, da das Problem mit b noch nicht gelöst ist,
aber die Lösung ist doch deutlich sichtbar:


Code:
variable a = ..
variable b;
try {
  b = a;
} catch..

variable c = b;

ganz einfach


edit: oh, soviel geschrieben und dabei einfach nur deins falsch gelesen ;)
sorry

also fehlt nur noch das Initialisieren:



Code:
variable a = ..
variable b = Startwert; (0 oder null)
try {
  b = a;
} catch..

variable c = b;
 
G

Gast

Gast
Code:
int TT, MM, JJJJ;
	try {
			TT = Integer.parseInt(tt);					//Interpretieren des Integerobjekts als primitiven Datentypen
			MM = Integer.parseInt(mm);
			JJJJ = Integer.parseInt(jjjj);
	}
	catch (NumberFormatException e) {
		throw new UngueltigesDatumException("XXXXXX");
	}
	catch (UngueltigesDatumException k) {
		System.out.println("!!Eingabefehler!!");
		k.printStackTrace();
		System.exit(1);
	}
 
G

Gast

Gast
Sorry das war der falsche code
hier der richtige:
Code:
	int TT = 0, MM = 0, JJJJ = 0; 
   	try {
		TT = Integer.parseInt(tt);					//Interpretieren des Integerobjekts als primitiven Datentypen
		MM = Integer.parseInt(mm);
		JJJJ = Integer.parseInt(jjjj);
	
		throw new UngueltigesDatumException("XXXXXX");
	} 
   	catch (UngueltigesDatumException k) { 
      		System.out.println("!!Eingabefehler!!"); 
      		k.printStackTrace(); 
      		System.exit(1); 
   	}

		Tag d = new Tag(TT,MM,JJJJ);

ich geb dir noch die klasse Tag dann hasst du alles und kannst es mal ausprobieren, dann verstehst du wie ichs meine
Hier Klasse Tag.java:
Code:
//import Prog1Tools.IOTools;
public class Tag {				//Klasse Tag3 wird erstellt
        
	private int  	jahr,			// private Klassenvariablen werden deklariert
			monat,
	    		tag;
		String	wochentag;
	
		
	public Tag() {				//Konstruktor
	}
			
	public Tag(int TT, int MM, int JJJJ) {	//Konstruktor fuer Objekte der Klasse Tag3 /Eigenschaften der Objekte
		this.tag = TT;			//private Variablen werden mit Werten oeffentlicher Variablen belegt
		this.monat = MM;
		this.jahr = JJJJ;
	}
	
						//get/setmethoden fuer Rueckgabewerte
        public int getTag() {
		return tag;
	}

	public void setTag(int TT) {
		this.tag = TT;
	}
	public int getMonat() {
		return monat;
	}

	public void setMonat(int MM) {
		this.monat = MM;
	}
	public int getJahr() {
		return jahr;
	}

	public void setJahr(int JJJJ) {
		this.jahr = JJJJ;
	}

	
	public int getTage(){			//Methode zur Berechnung der Gesamttage und Schaltjahre				
	int a = jahr - 1601;			//Fuer Jahre ab 1601
	int schaltjahre = a/4 - a/100 + a/400;	//Schaltjahre bestimmen
	int tage = a * 365 + schaltjahre - 1;	//Tage bis Beginn des eingegebenen Jahres
	
		
	int b = 0;
	if (monat == 1)				//Aufsummieren aller Tage in Abhaengigkeit des Monats
	{	b = tage + tag; } 	 
        if (monat == 2)
	{	b = tage + 31 + tag; }
	if (monat >= 3 & ((jahr % 4 == 0 & jahr % 100 != 0) | jahr % 400 == 0))	//falls Schaltjahr
		tage += 1;
	if (monat == 3)
	{	b = tage + 59 + tag; }
	if (monat == 4)
	{	b = tage + 90 + tag; }
	if (monat == 5)
	{	b = tage + 120 + tag; }
	if (monat == 6)
	{	b = tage + 151 + tag; }
	if (monat == 7)
	{	b = tage + 181 + tag; }
	if (monat == 8)
	{	b = tage + 212 + tag; }
	if (monat == 9)
	{	b = tage + 243 + tag; }
	if (monat == 10)
	{	b = tage + 273 + tag; }
	if (monat == 11)
	{	b = tage + 304 + tag; }
	if (monat == 12)
	{	b = tage + 334 + tag; }
	
	return b;			//Rueckgabewert der Gesamttage
	}

	
	public String getWochentage() { 
		if (getTage() % 7 == 0)
		{	wochentag = "Montag"; }
		else if (getTage() % 7 == 1)
		{	wochentag = "Dienstag"; }
		else if (getTage() % 7 == 2)
		{	wochentag = "Mittwoch"; }
		else if (getTage() % 7 == 3)
		{	wochentag = "Donnerstag"; }
		else if (getTage() % 7 == 4)
		{	wochentag = "Freitag"; }
		else if (getTage() % 7 == 5)
		{	wochentag = "Samstag"; }
		else if (getTage() % 7 == 6)
		{	wochentag = "Sonntag"; }

	return wochentag;
	}
	

	

	public String toString() {
		return "Der " + tag + "." + monat + "." + jahr + " war ein: " + getWochentage();
	}
}
 

DiRom2007

Mitglied
Hallo,

@Slater ich kann deinen Lösungsvorschlag nicht ganz nachvollziehen? Habe es so versucht bei mir läuft es so nicht...

Habe zwar eine andere Aufgabe aber das Problem ist das Gleiche.
 
S

SlaterB

Gast
schön, und ich kann deine Probleme bei meinem Lösungsvorschlag nicht nachvollziehen ;)

-> Sprechen, Code, Exceptions, ..
 

DiRom2007

Mitglied
@Slater: habe nohmal alles überprüft dein Vorschag funktioniert! Hatte nur eine if Schleife vergessen, so dass ständig eine Exception ausgeworfen wurde...

Danke!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Eigene Exception Klasse Allgemeine Java-Themen 7
E Eigene Exception Klasse erstellen Allgemeine Java-Themen 3
M Best Practices Exception Handling für eigene library Allgemeine Java-Themen 8
reibi Eigene exception mit feld "serialVersionUID" Allgemeine Java-Themen 3
M Eigene Exception Klasse Allgemeine Java-Themen 4
M Eigene Datenstruktur um eine Menge zu speichern Allgemeine Java-Themen 3
_user_q Was brauche ich, um eine eigene "Search for updates"-Funktion einzubauen? Allgemeine Java-Themen 1
pizza_dox_9999 Wie füge ich eine "eigene" ScriptEngine dem ScriptEngineManager? Allgemeine Java-Themen 3
E Input/Output Eigene Datei mit java öffnen Allgemeine Java-Themen 9
missy72 Klassen Eigene Klasse MessageWindow ähnlich der Alert Klasse Allgemeine Java-Themen 2
J Eigene Api erstellen und dann auch verwenden - Ordnerstruktur Allgemeine Java-Themen 1
RalleYTN Eigene ScriptEngine? Allgemeine Java-Themen 14
L Eigene Dependency Injections definieren? Allgemeine Java-Themen 4
K Eigene API erstellen? Allgemeine Java-Themen 13
T Best Practice Eigene GUI programmieren | MouseMotion Detection Allgemeine Java-Themen 3
M Eigene forEach()-Methode funktioniert nicht. Allgemeine Java-Themen 2
J eigene Java Bibliothek Allgemeine Java-Themen 2
M Output einer anderen/externen .jar in eigene JTextArea Allgemeine Java-Themen 4
B Klassen Eigene Klasse als Array benutzen Allgemeine Java-Themen 3
D Eigene/r Collection/Container Allgemeine Java-Themen 3
F Eigene .jar mit anderer .jar öffnen Allgemeine Java-Themen 7
X Eigene Annotation - mit Bedingung für ganze Klassen oder Methoden Allgemeine Java-Themen 2
H Best Practice Ideensuche: Flexibel hinzufügbare eigene Parser Allgemeine Java-Themen 6
T OOP Die eigene Bruchklasse Allgemeine Java-Themen 11
J Java - Eigene DLL importieren Allgemeine Java-Themen 25
B JTable eigene Daten Add Methode Allgemeine Java-Themen 2
S OOP Problembereichsmodell: Bestehende Framework Klasse in eigene Klassenstruktur einbinden Allgemeine Java-Themen 9
S Methoden Eigene Klasse als Rückgabewert Allgemeine Java-Themen 6
S eigene regEx schreiben Allgemeine Java-Themen 4
O Collections Eigene Methodenzusicherung bei Collections als Parameter Allgemeine Java-Themen 2
M Eigene Klasse verschlüsselt in Datei speichern Allgemeine Java-Themen 13
N Geodaten für eigene Routenplanung Allgemeine Java-Themen 5
M Problem beim schreiben einer eigene generische Klasse Hashtable Allgemeine Java-Themen 11
C Eigene Sounddateien schreiben Allgemeine Java-Themen 12
M Problem beim schreiben einer eigene generische Klasse LinkedList Allgemeine Java-Themen 34
M Eigene Factory Klasse Allgemeine Java-Themen 21
M eigene Klasse durch Composition mit java.io.File erweitern Allgemeine Java-Themen 3
S eigene Update Funktion Allgemeine Java-Themen 5
H2SO3- getMethods(): eigene methoden rausfinden Allgemeine Java-Themen 4
C eine eigene Javadoc erstelen Allgemeine Java-Themen 3
Kr0e Eigene RMI Implementierung Allgemeine Java-Themen 3
S Eigene Bibliothek Allgemeine Java-Themen 2
M Eigene Dateiendung? Allgemeine Java-Themen 3
M Plugins für eigene Programme Allgemeine Java-Themen 3
S Eigene Events feuern Allgemeine Java-Themen 3
S Instanz in einer Klasse erstellen, und dem Konstruktor die eigene Klasse mitgeben Allgemeine Java-Themen 4
A Eigene Java Plugins entwickeln - wie optimal? Allgemeine Java-Themen 14
R Eigene ArrayList vom Typ Short, Integer oder Double Allgemeine Java-Themen 4
U Eigene "Dining Philosopher" Interpretation weckt Philos nie auf Allgemeine Java-Themen 2
0x7F800000 Wovon eigene Events für spezialisierte JComponents ableiten? Allgemeine Java-Themen 2
SuperSeppel13 Packete der Java Bibliothek ins eigene Prjekt integrieren Allgemeine Java-Themen 4
P Eigene Klasse kopieren die auf sich selbst refferenziert Allgemeine Java-Themen 8
G Umgebungsvariabeln auslesen (Path, Temp, oder eigene) Allgemeine Java-Themen 2
T Eigene PID ermitteln! Allgemeine Java-Themen 3
D Icon für eigene Dateiendung Allgemeine Java-Themen 7
G Eigene "Speicherverwaltung" Allgemeine Java-Themen 5
H eigene Annotations Allgemeine Java-Themen 2
S eigene Klasse die JButton extended - als Liste! Allgemeine Java-Themen 6
D Performance: ArrayList vs. Array vs. "Eigene Liste&quot Allgemeine Java-Themen 8
A Eigene Wrapper-Klassen Allgemeine Java-Themen 2
J Kann eigene Klasse nicht ermitteln Allgemeine Java-Themen 4
M Wann verwendet man PropertyChangedEvents, wann eigene? Allgemeine Java-Themen 3
J OpenOffice.org Events in eigene Anwendung umleiten Allgemeine Java-Themen 4
U eigene Datenstruktur ArrayList<String> nach Object [][ Allgemeine Java-Themen 2
N Observer/Observable der JAVA-API od. eigene Implementierung Allgemeine Java-Themen 2
B eigene Klassen verkaufen Allgemeine Java-Themen 2
W eigene event-Klasse, event posten Allgemeine Java-Themen 2
M Eigene .jar in anderes Programm importieren[eclipse] Allgemeine Java-Themen 6
T Eigene Libary Allgemeine Java-Themen 6
Q Bibliotheken mit ins eigene Jar aufnehmen Allgemeine Java-Themen 4
M eigene Objekte vergleichen Allgemeine Java-Themen 6
K log4j - eigene Info-Ausgaben Allgemeine Java-Themen 5
G Performance JDOM - DOM - eigene HashMap (SAX) Allgemeine Java-Themen 2
G JWindow verschieben bei mousedragged auf eigene titelleiste Allgemeine Java-Themen 3
N Methoden in eigene Dateien auslagern? Allgemeine Java-Themen 10
B Eigene Datentypen Allgemeine Java-Themen 5
G Brauche hilfe bei JMF: Wie eigene Streaming Data Source! Allgemeine Java-Themen 4
G eigene klassen die ein jar verwenden als neues jar erstellen Allgemeine Java-Themen 4
O Externe Jars in eigene JAr packen in Eclipse Allgemeine Java-Themen 5
R Updateprozedur ü. Internet fürs eigene Programm? Allgemeine Java-Themen 24
G eigene uhrzeit in einer java applikation führen Allgemeine Java-Themen 19
R Eigene Konfigurationsdatei für größere Projekte. Allgemeine Java-Themen 4
J Eigene Callback Methode? Allgemeine Java-Themen 3
S eigene evetns erstellen Allgemeine Java-Themen 5
K eigene GUI Komponente wird nicht angezeigt Allgemeine Java-Themen 3
D Eigene Classes aus anderen .java-Dateien Allgemeine Java-Themen 2
G Eigene PrintService Implementierung. Allgemeine Java-Themen 5
C Die Konsole ins eigene Programm einbauen Allgemeine Java-Themen 5
W Queue.remove() -> no such element exception Allgemeine Java-Themen 17
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
N Kann ich die Nullpointer Exception umgehen Allgemeine Java-Themen 12
N A java Exception has occured Allgemeine Java-Themen 8
G javafx "class path" exception Allgemeine Java-Themen 5
H Interface PluginSystem ClassNotFound exception für library Klassen Allgemeine Java-Themen 10
tom.j85 Exception bei Abfrage von Ländercodes in API? Allgemeine Java-Themen 13
S Exception Allgemeine Java-Themen 5
LimDul Streams und Exception Allgemeine Java-Themen 8
C FileLock - Exception wird immer geworfen Allgemeine Java-Themen 4
S Wertbeschränkung Exception oder Anpassung? Allgemeine Java-Themen 4
D Nullpointer Exception Problem Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben