Vafe Geschrieben 20. Februar 2004 Teilen Geschrieben 20. Februar 2004 Ich hätte gerne einen regulären Ausdruck, der mir in einer Source-Datei alle Stellen liefert, in denen in einer Zeile mehr als eine Referenz verwendet wird. Beispiel: theBeispielIdent = theBeispiel.getBeispiel().getBeispielIdent(); Der Hintergrund ist der, das bei einer Nullpointer-Exception in Java nur die Zeile angegeben wird, was bei obiger Zeile immer noch zwei Möglichkeiten offen lassen würde. Diese Stellen möchte ich in Zukunft abschaffen bzw. absichern. Kann mir irgendwer helfen?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
frquadrat Geschrieben 24. Februar 2004 Teilen Geschrieben 24. Februar 2004 Der Hintergrund ist der, das bei einer Nullpointer-Exception in Java nur die Zeile angegeben wird, was bei obiger Zeile immer noch zwei Möglichkeiten offen lassen würde. Diese Stellen möchte ich in Zukunft abschaffen bzw. absichern. Äh... Und dabei soll eine RegExp helfen? Wie soll die denn feststellen, welcher Methodenaufruf die Nullpointer-Exception warf? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thanks-and-Goodbye Geschrieben 24. Februar 2004 Teilen Geschrieben 24. Februar 2004 Hmm... das ist doch Programmierung. ~~~~ Verschoben: Java ~~~~ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Vafe Geschrieben 25. Februar 2004 Autor Teilen Geschrieben 25. Februar 2004 Original geschrieben von frquadrat Äh... Und dabei soll eine RegExp helfen? Wie soll die denn feststellen, welcher Methodenaufruf die Nullpointer-Exception warf? Nein hilft natürlich nicht beim rausfinden, welche methode die exception geworfen hat, aber ich würde dann alle diese Stellen ändern, so dass es auf zwei zeilen liegt, aber ich will halt nicht den ganzen code per hand durchsehen um die stellen zu finden... etwas logischer ?? ;-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 26. Februar 2004 Teilen Geschrieben 26. Februar 2004 Servus, also Du wirst nicht drumrumkommen, dass Du alle Zeilen von Hand durchgehst und schaust, was schief läuft. Normalerweise schreibt man doch auch den Code erstmal etwas ausführlicher, und wenn er fehlerfrei läuft, kann man ihn evtl. kürzen, indem man mehrere Aufrufe (mit Casting) in einer Zeile schreibt. Welche IDE nutzt Du denn? Dann könntest Du ja einfach mal debuggen und jeweils in die Methode reingehen und dort schauen, in welcher Methode die NullPointerException geworfen wird. Handelt es sich um viele solche Stellen? Wenn ja, sind das verschiedene Szenarien oder immer derselbe Ablauf. Bei dem selben Ablauf solltest Du evtl. Dein Design nochmal überdenken, bei vielen verschiedenen Deine Testläufe. Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
PerdianMG Geschrieben 29. Februar 2004 Teilen Geschrieben 29. Februar 2004 Der Hintergrund ist der, das bei einer Nullpointer-Exception in Java nur die Zeile angegeben wird, was bei obiger Zeile immer noch zwei Möglichkeiten offen lassen würde. Diese Stellen möchte ich in Zukunft abschaffen bzw. absichern.Naja mal ganz vom Thema Regex weg, ist das schlechter Stil. Du solltest nicht versuchen solche - für dich - potentiellen Probleme zu vermeiden sondern besser versuchen das Problem selber anzugehen. Wenn eine NullPointerException geworfen wird, bekommst du immer einen Stacktrace mitgeliefert. Verwende eine gute IDE mit Debugger (Eclipse bietet sich z.B. an dafür) und sieh dir den Inhalt der Variablen selber an - einmal damit angefangen, wirst du es nie wieder anders machen wollen. Stell die mal vor, du hast eine Situation, wo ein Methodenaufruf wie dieser hier erscheint: Object o = a.b().c().d().e.f.g(); Das jetzt jedesmal aufzuschlüsseln in aufzuschlüsseln B b = a.b(); C c = b.c(); D d = c.d(); E e = d.e; F f = e.f; G g = f.g(); kann immer und immer wieder angewendet zu ziemlich unübersichtlichem Code führen. Hier solltest du lieber hingehen und beim Design eingrenzen wo eine NPE geworfen werden könnte, und diese dann explizit umgehen: D d = a.b().c().d(); if(d == null) { // Jetzt irgendwas machen und auf den null-Zustand reagieren System.err.println("d ist null!"); } else { Object o = d.e.f.g(); } Christian Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Vafe Geschrieben 8. März 2004 Autor Teilen Geschrieben 8. März 2004 OK, also ich versuche das ganze problem noch etwas mehr einzugrenzen: 1. es handelt sich um den Code des Projekts aus der Firma wo ich arbeite, sprich es ist nur ein ganz kleiner Teil eines sehr großen Projekts! Das heißt, dass dort viele Methoden verwendet werden, auf deren Inhalt ich keinen Einfluss habe, bzw. Methoden die Datenbankinhalte zurück geben. 2. Klar könnte ich das Debuggen, aber das ist etwas komplizierter, denn jedes mal wo ich debugge, können viele andere auf der Testumgebung nicht weiter testen, das will ich verhindern!! Deshalb die benötigte explizite Zeilenangabe, denn meistens brauche ich nur auf den Methodenaufruf einmal raufschauen und sehe schon was Null ist (90% der Fälle). 3. will ich nicht jede Stelle absichern (viel zu viel Code!)! Es sind nicht so viele Stellen dabei, wo das überhaupt möglich ist(Exceptions werden auch in den Methoden abgefangen!). 4. ich nutze IntelliJ. klarer?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
PerdianMG Geschrieben 8. März 2004 Teilen Geschrieben 8. März 2004 3. will ich nicht jede Stelle absichern (viel zu viel Code!)! Es sind nicht so viele Stellen dabei, wo das überhaupt möglich ist(Exceptions werden auch in den Methoden abgefangen!). Zuviel Code? Was ist denn das für eine Begründung? Wie willst du auf diese Art und Weise denn jemals zu einem stabilen Programm kommen? Wenn du jedes Mal erst die Exception selber analysieren musst bist du in Monaten/Jahren noch am Bugfixen, weil du nie genau weisst, in welcher Situation der Fehler jetzt genau auftritt. Klar kannst du auf deine Art und Weise die Fehler eingrenzen, aber du wirst immer am Hinterherprogrammieren sein. Auch wenn's einmal mehr Arbeit und mehr Code ist: Sichere dich lieber im Vorhinein ab, anstatt hinterher um die einzelnen Fehler drumrumzuprogrammieren. Christian Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Vafe Geschrieben 10. März 2004 Autor Teilen Geschrieben 10. März 2004 alles klar, dann werd ich wohl an dieser stelle aufgeben... es hätte lediglich gereicht, wenn mir jemand gesagt hätte wie ein solcher ausdruck aussehen könnte, denn es hat schon seinen grund dass ich das brauche... aber scheinbar weiß das niemand... trotzdem danke für die vielen gut gemeinten ratschläge!! Vanessa Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 10. März 2004 Teilen Geschrieben 10. März 2004 /* sollte deinen Ansprüchen genügen (prüft ob in einer Zeile min. 2x eine schliessende runde Klammer gefolgt von einem Punkt vorkommt */ String regEx = "\\)\\..+?\\)\\."; [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Vafe Geschrieben 15. März 2004 Autor Teilen Geschrieben 15. März 2004 Vielen Dank!! Mehr wollte ich garnicht ;-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.