frang81 Geschrieben 16. März 2005 Geschrieben 16. März 2005 Hab ein Problem mit dem finally block, eclipse meckert den an! Hat einer ne Ahnung warum?? Bin absoluter Neuling auf dem Gebiet!!!! Fehlermeldung: Finally Block does not complete normally Quelltextauszug: } finally { try { if (pst != null) pst.close(); } catch (SQLException se) { } return (updated == 0 ? false : true); } } Hat einer ne Idee? Ich vermute das es mit dem return zusammen hängt, aber wie mache ich das anders??? Zitieren
Pinhead Geschrieben 16. März 2005 Geschrieben 16. März 2005 Eventuell liegt es daran : http://www.galileocomputing.de/openbook/javainsel4/javainsel_07_000.htm#Rxx365java07000040002291F0481CB Zitieren
perdian Geschrieben 16. März 2005 Geschrieben 16. März 2005 Hat einer ne Idee? Ich vermute das es mit dem return zusammen hängt, aber wie mache ich das anders??? Richtig, du solltest in einem finally-Block kein return verwenden. Stell dir einfach mal folgende Situation vor: try { return 1; } finally { return 2; } Und was würdest du jetzt als return Wert erwarten? Richtig - sowohl 1 als auch 2 wäre vom Gefühl her richtig. Mehr dazu hier: http://www.theone.ru/lists/comp.lang.java.programmer/msg10196.html http://krakatoa.lri.fr/papers/langspec-2.0/exceptions.doc.html Zitieren
etherius Geschrieben 16. März 2005 Geschrieben 16. März 2005 Also um da mal grad was zu zu kommentieren: try { return 1; } finally { return 2; } Er versucht 1 zurück zu geben, das kann nicht fehlschlagen, was dann doch eigentlich bedeuten müsste, dass er den finally block überhaupt nicht erreicht, oder? ^^ Zitieren
frang81 Geschrieben 16. März 2005 Autor Geschrieben 16. März 2005 Ich rätsel mir auch noch einen zurecht! Die alte Java Version hats nicht angemeckert! 115 Stellen im QT sind betroffen! Hat einer ne Idee wie man das schnell abändern kann, irgendwas universales was man nur abändern muss? Sonst häng ich heute die ganze Nacht da drüber wenn ich jede Stelle einzelnd überdenken muss! Zitieren
perdian Geschrieben 16. März 2005 Geschrieben 16. März 2005 Er versucht 1 zurück zu geben, das kann nicht fehlschlagen, was dann doch eigentlich bedeuten müsste, dass er den finally block überhaupt nicht erreicht, oder? ^^Falsch! Informiere dich darüber, wie das Exception-Handling funktioniert. http://www.google.com/search?hl=de&ie=ISO-8859-1&q=java+exceptions Der finally Block wird immer durchlaufen, das ist ja gerade der Witz an der ganzen Geschichte. Damit kannst du sicherstellen, dass beispielsweise cleanup Operation sowohl bei Erfolg, als auch bei einem Fehler statt finden - aber befasse dich ausführlich mit der gesamten Thematik, dann wird das auch klar. Hat einer ne Idee wie man das schnell abändern kann, irgendwas universales was man nur abändern muss? Sonst häng ich heute die ganze Nacht da drüber wenn ich jede Stelle einzelnd überdenken muss! Es wird dir, wenn du es sauber haben willst, nicht anderes übrig bleiben, als jede einzelne Stelle durchzugehen und zu gucken, was da jetzt genau gecodet ist. Woher soll irgendein Tool wissen, was du mit den Befehlen an der Stelle anstellen willst? Klarer Fall für die Glaskugel. Die Warning selber kannst du zwar im Eclipse abstellen (Stichwort Compiler-Options) aber damit wirst du das Problem an sich nicht loswerden. Die Warnung ist ja schließlich dazu da, um zu signalisieren "Das könnte zu undefiniertem Verhalten führen, also entweder beheben oder sich hinterher nicht wundern, wieso etwas schief läuft". Zitieren
frang81 Geschrieben 16. März 2005 Autor Geschrieben 16. März 2005 So meckert er jetzt nicht mehr: } finally { try { if (pst != null) pst.close(); } catch (SQLException se) { } } return (updated == 0 ? false : true); } Zitieren
etherius Geschrieben 16. März 2005 Geschrieben 16. März 2005 Wird mir eh nichts anderes übrig bleiben als mich mal intensiver mit der thematik zu befassen @perdi ... weil 1. wird bei uns in Bielefeld Java in der Berufsschule als programmiersprache unterrichtet (lachhaft, weiß ich) und wir Programmieren hier in der Firma ausschließlich in Java. Man dankt für den Hinweis Zitieren
frang81 Geschrieben 30. März 2005 Autor Geschrieben 30. März 2005 Das Problem hat sich nun erledigt! Von 115Warnungen hab ich nur noch 8 übrig. Ich weiß echt nicht wie ne Firma uns sowas abgeben konnte! Die 8 Warnungen beziehen sich alle auf: int y = datum.getYear(); int mo = datum.getMonth()+1; int d = datum.getDate(); int h = datum.getHours(); int mi = datum.getMinutes(); int s = datum.getSeconds(); etc. Meldung: The method getDate() from type Date is deprecated (variiert natürlich je nach get methode) so wie ich das verstehe wird die get Funktion in der nächsten Version nicht mehr unterstützt. Was kann ich tun, wie formuliere ich das neu so dass es in der Zukunft weiterhin funktioniert?? Software: Eclipse Platform Version: 3.1.0 jdk1.3.1_04 Zitieren
ExAzubi Geschrieben 30. März 2005 Geschrieben 30. März 2005 Hallo, deprecated bedeutet nicht, das es Sie in der nächster Version nicht mehr geben wird, also in 1.4.2.06 ist die Klasse Date immer noch enthalten. Es kann nur sein, das diese irgendwann mal nicht mehr da ist. Statt Date solltest du den GregorianCalendar benutzen, der ist eigentlich dafür reingekommen. Viel Spaß -- Ich würde auch gerne wieder JAVA programmieren --- Zitieren
perdian Geschrieben 30. März 2005 Geschrieben 30. März 2005 so wie ich das verstehe wird die get Funktion in der nächsten Version nicht mehr unterstützt. Was kann ich tun, wie formuliere ich das neu so dass es in der Zukunft weiterhin funktioniert??Du solltest, wenn du direkt auf Infos wie Tag, Woche, etc. zugreifen will nicht java.util.Date sondern java.util.Calendar verwenden - genauso, wie es auch im Javadoc steht. Deprecated. As of JDK version 1.1, replaced by Calendar.get(Calendar.DAY_OF_WEEK). Mehr hier: http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html Zitieren
frang81 Geschrieben 30. März 2005 Autor Geschrieben 30. März 2005 Danke dir! Funktioniert trotzdem nicht, da mach ich aus einer Warnung wieder nen Fehler!?!?!?! Zitieren
perdian Geschrieben 30. März 2005 Geschrieben 30. März 2005 Funktioniert trotzdem nichtWAS GENAU funktioniert nicht? Quellcode? Fehlermeldung? Zitieren
frang81 Geschrieben 30. März 2005 Autor Geschrieben 30. März 2005 Das mit Calendar laufen zu lassen, kennt er nicht! Dazu kommt das ich von Java Null Plan hab! Soll ja nur mal eben gucken was die externe Firma da für fehler eingebaut hat! Ja klasse regt mich das auf! Calendar cannot be resolved Zitieren
Morbid_Soul Geschrieben 30. März 2005 Geschrieben 30. März 2005 Mh, vielleicht musst Du die Klasse noch importieren? import java.util.Calendar; Ein import java.util.Date; müsste da ja schon stehen... Wenn in der Klasse aber ein import java.util.*; steht, weiß ich jetzt auf die schnelle auch nichts. Das würde nämlich bedeuten, dass er bereits alle Klassen aus dem genannten Package importiert hat (inkl. Calendar). Gruß, Peter Zitieren
perdian Geschrieben 30. März 2005 Geschrieben 30. März 2005 Das mit Calendar laufen zu lassen, kennt er nicht!Ich frage nochmal: Wie äussert sich dieses "kennt er nicht"? Welchen Code verwendest du, und welche Fehlermeldung inklusive Stacktrace wird dir ausgegeben? Wenn du Hilfe haben willst musst du schon die genauen Ursachen ein bisschen deutlicher schildern, ansonsten ist das ein Fall für: Zitieren
frang81 Geschrieben 30. März 2005 Autor Geschrieben 30. März 2005 Der quellcode: java.util.Calendar datum = new java.util.Calendar(); int y = datum.getYear(); if (y < 1000) y+=1900;// warum nicht y < 100 bei zB. 1997?? bei 2005??? int mo = datum.getMonth()+1; // int d = datum.getDate(); int d = datum.getCalendar(DAY_OF_MONTH); int h = datum.getHours(); int mi = datum.getMinutes(); int s = datum.getSeconds(); Die anderen Fragen kann ich dir nicht beantworten da ich nicht weiß was ein Stacktrace ist! Arbeite das erste mal mit eclipse und java... Importiert hatte ich die klasse schon ;-) Danke trotzdem... Zitieren
Morbid_Soul Geschrieben 30. März 2005 Geschrieben 30. März 2005 Die Klasse Calendar ist abstrakt. Du kannst daher keine neue Instanzen der Klasse mit dem new-Operator erzeugen. So kannst Du dir ein Calendar-Objekt holen: java.util.Calendar datum = Calendar.getInstance(); Das ist ein Beispiel für einen Stacktrace: java.lang.NullPointerException at de.xxx.xxx.xxx.xxx.xxx.HobbiesWaehlenDialog.bOk_actionPerformed(HobbiesWaehlenDialog.java:144) at de.xxx.xxx.xxx.xxx.xxx.HobbiesWaehlenDialog_bOk_actionAdapter.actionPerformed(HobbiesWaehlenDialog.java:181) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1764) at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1817) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:419) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:257) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)....... Zitieren
perdian Geschrieben 30. März 2005 Geschrieben 30. März 2005 java.util.Calendar datum = new java.util.Calendar();Das kann nicht funktionieren. Calendar ist eine abstrakte Klasse, von der du keine Instanzen erzeugen kannst. Um eine Calendar korrekt zu erzeugen musst du Calendar.getInstance() verwenden. Die anderen Fragen kann ich dir nicht beantworten da ich nicht weiß was ein Stacktrace ist! Arbeite das erste mal mit eclipse und java...Dann wirst du dich damit näher beschäftigen müssen, wenn du das Problem beseitigen willst. Sowas ist nicht mal eben in zwei Sätzen erklärt, du brauchst schon einen gewissen Background damit du auch verstehst, wieso du eigentlich diese und jene Änderung/Ergänzung gemacht hast - sonst wirst du immer wieder an den verschiedensten Stellen auf Fehler laufen. Zitieren
frang81 Geschrieben 1. April 2005 Autor Geschrieben 1. April 2005 So hats geklappt: GregorianCalendar cal=new GregorianCalendar(); int y = cal.get(Calendar.YEAR); if (y < 1000) y+=1900;// warum nicht y < 100 bei zB. 1997?? bei 2005??? int mo = cal.get(Calendar.MONTH)+1; int d = cal.get(Calendar.DATE); int h = cal.get(Calendar.HOUR_OF_DAY); int mi = cal.get(Calendar.MINUTE); int s = cal.get(Calendar.SECOND); Danke vielmals... Zitieren
frang81 Geschrieben 1. April 2005 Autor Geschrieben 1. April 2005 So hats geklappt: GregorianCalendar cal=new GregorianCalendar(); int y = cal.get(Calendar.YEAR); if (y < 1000) y+=1900;// warum nicht y < 100 bei zB. 1997?? bei 2005??? int mo = cal.get(Calendar.MONTH)+1; int d = cal.get(Calendar.DATE); int h = cal.get(Calendar.HOUR_OF_DAY); int mi = cal.get(Calendar.MINUTE); int s = cal.get(Calendar.SECOND); Danke vielmals... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.