Veröffentlicht 16. März 200520 j 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???
16. März 200520 j Eventuell liegt es daran : http://www.galileocomputing.de/openbook/javainsel4/javainsel_07_000.htm#Rxx365java07000040002291F0481CB
16. März 200520 j 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
16. März 200520 j 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? ^^
16. März 200520 j 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!
16. März 200520 j 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".
16. März 200520 j So meckert er jetzt nicht mehr: } finally { try { if (pst != null) pst.close(); } catch (SQLException se) { } } return (updated == 0 ? false : true); }
16. März 200520 j 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
30. März 200520 j 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
30. März 200520 j 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 ---
30. März 200520 j 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
30. März 200520 j Danke dir! Funktioniert trotzdem nicht, da mach ich aus einer Warnung wieder nen Fehler!?!?!?!
30. März 200520 j 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
30. März 200520 j 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
30. März 200520 j 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:
30. März 200520 j 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...
30. März 200520 j 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).......
30. März 200520 j 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.
1. April 200520 j 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...
1. April 200520 j 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...
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.