Try & Catch Error Handling & Chaos Code
-
Wäre es nicht sinnvoll, bei einem Konstrukt wie diesem hier (Code ist in Java):
public static void main(String args[]) { try { // normaler Programmcode } catch (Exception e) { System.out.println ("Err - " + e ); } }
in der catch Anweisung anstatt
System.out.println ("Err - " + e );
Noch zusätzlich irgend einen belibigen mit ausreichenden Stellen versehenen Code (ich nenne ihn mal Chaos Code, da frei aus der Luft gegriffen bzw. rein zufällig ausgedacht, random eben) auszugeben?
Also so etwas:
public static void main(String args[]) { try { // normaler Programmcode } catch (Exception e) { System.out.println ("Err - " + e ); System.out.println ("KSNCDJSKDJJA"); } }
Denn dadurch würde man auch ohne Debugcode sehr schnell die Stelle finden können, wo das Programm ausgestiegen ist.
Und da es sehr unwahrscheinlich ist, daß man als Programmierer auch bei einem größeren Softwareprojekt genau den gleichen Chaoscode eintippt, könnte man bei ausreichender Stellenzahl irgendetwas beliebiges reinhacken und müßte Fehlercodes nicht aufwendig durchnummerieren und die Nummern ständig anpassen.
Der Chaoscode würde immer an die entscheidende Stelle hinweisen und die Wahrscheinlichkeit, daß der identisch mit anderem Chaoscode ist, ist wie bei MD5 Prüfsummen doch sehr gering, wenn man als Progger auch wirklich einen random Code eingibt.
-
Schreib dir doch ne anständig Log-Funktion, die in dem catch ausgeführt wird.
Irgendwie sowas: Log(String className, String method, String msg, evtl. Level-Enum);Dann siehst du schon im Log oder in der Konsole, wo was passiert ist.
Und im Code suchen läßt sich das auch schnell.
-
Chaoscode schrieb:
Wäre es nicht sinnvoll, bei einem Konstrukt wie diesem hier (Code ist in Java):
public static void main(String args[]) { try { // normaler Programmcode } catch (Exception e) { System.out.println ("Err - " + e ); } }
in der catch Anweisung anstatt
System.out.println ("Err - " + e );
Noch zusätzlich irgend einen belibigen mit ausreichenden Stellen versehenen Code (ich nenne ihn mal Chaos Code, da frei aus der Luft gegriffen bzw. rein zufällig ausgedacht, random eben) auszugeben?
Also so etwas:
public static void main(String args[]) { try { // normaler Programmcode } catch (Exception e) { System.out.println ("Err - " + e ); System.out.println ("KSNCDJSKDJJA"); } }
Denn dadurch würde man auch ohne Debugcode sehr schnell die Stelle finden können, wo das Programm ausgestiegen ist.
Und da es sehr unwahrscheinlich ist, daß man als Programmierer auch bei einem größeren Softwareprojekt genau den gleichen Chaoscode eintippt, könnte man bei ausreichender Stellenzahl irgendetwas beliebiges reinhacken und müßte Fehlercodes nicht aufwendig durchnummerieren und die Nummern ständig anpassen.
Der Chaoscode würde immer an die entscheidende Stelle hinweisen und die Wahrscheinlichkeit, daß der identisch mit anderem Chaoscode ist, ist wie bei MD5 Prüfsummen doch sehr gering, wenn man als Progger auch wirklich einen random Code eingibt.Ich lese die Frage als:
Wäre es nicht sinnvoll, im Releasecode Debugausgaben zu machen, "denn dadurch würde man auch ohne Debugcode sehr schnell die Stelle finden können, wo das Programm ausgestiegen ist."
Tja, das hängt wohl vom Projekt ab und davon, wie viele Fehler mit Aussteig man ausliefern will.
-
Java stacktraces haben doch Zeilennummern. Was soll das bringen?
-
wozu schrieb:
Java stacktraces haben doch Zeilennummern. Was soll das bringen?
Ich nehme an, er meinte die Frage allgemeiner und nahm Java hier nur als Beispielsprache. Deswegen auch nicht im Java-Forum.
-
volkard schrieb:
wozu schrieb:
Java stacktraces haben doch Zeilennummern. Was soll das bringen?
Ich nehme an, er meinte die Frage allgemeiner und nahm Java hier nur als Beispielsprache. Deswegen auch nicht im Java-Forum.
Ja, so habe ich das gemeint. Also ganz allgemein.
-
Die wichtige Info ist doch sowieso wo die Exception geworfen wurde und nicht wo sie gefangen wurde.
-
eben. wenn man die exception eh nicht behandeln kann oder will, braucht man sie auch nicht zu fangen und schon gar nicht durch ein sinnloses stdout zu verschlucken. das führt nämlich gerne mal zu unvorhersehbaren nebeneffekten und endet in stundenlangen debug-sessions inkl. stark erhöhter WTF-rate.
-
Chaoscode schrieb:
Ja, so habe ich das gemeint. Also ganz allgemein.
Damit hast du was verallgemeinert, was nicht zu verallgemeinern ist. Exceptions in Java und C++ funktionieren unterschiedlich, sind daher auch unterschiedlich zu debuggen usw.