try um alles?



  • Hi,
    ich wollte mal fragen ob es möglich ist ein try catch block um alles zu machen und eine exception so abzufangen. Oder gibt es da eine andere schlauere Lösung?

    Der Grund ist, dass ein Prog. auf einem Server laufen soll und der ist so eingerichtet, dass wenn etwas auf die Konsole ausgegeben wird, ein Mail verschickt wird... Zeilenweise...

    Danke



  • noobie schrieb:

    Oder gibt es da eine andere schlauere Lösung?

    Definitiv. Einen try-catch Block machst du nur an den Stellen, wo du sinnvoll auf die Exception reagieren kannst.

    Der Grund ist, dass ein Prog. auf einem Server laufen soll und der ist so eingerichtet, dass wenn etwas auf die Konsole ausgegeben wird, ein Mail verschickt wird... Zeilenweise...

    Verstehe ich nicht.



  • noobie schrieb:

    Oder gibt es da eine andere schlauere Lösung?

    Ich mache in allen öffentlichen Funktionen ein Try/Catch. Dazu noch ne Gültigkeitsüberprüfung der Parameter mit nem Throw wenn Müll übergeben wurde. Try/Catch in privaten Funktionen nur wenn ich weiß, dass die Aktion öfters mal schief gehen kann. Dazu noch ein Erfolgs/Fehlerfalllogging (mit drei l), bei Eintritt bzw. Verlassen der Methode.

    Fehler solltest du so früh wie möglich abfangen und entsprechend darauf reagieren. Anstelle stdout-Ausgaben per Mail zu verschicken (das meinst du doch, oder?), würde ich mir mal Log4J anschauen. Ein sehr umfangreiches Loggingframework, dort kannst du entsprechende Emailhandler registrieren.



  • Log4J hab ich nur mal ganz kurz angeschaut. Loggen ist aber nicht das Problem. Mails und eine Log-Datei mache ich selbst und das funktioniert auch ganz gut.

    Das mit dem Server scheint aber nochmals eine Erklärung zu brauchen:
    Wenn ich ein Prog. schreibe welches einfach nur sys.out.println("Hallo Welt.") mache, dann wird gleich ein E-Mail gemacht(vom Server, ich hab keine Kontrolle darüber!) und die Ausgabe verschickt.
    Also alles was auf die Konsole kommt, wird Zeilenweise verschickt... jede neue Zeile ein Mail.
    Wenn ich das obige zum Spass in eine for Schleife mit 300 durchgängen mache, werden 300 Mails verschickt!

    Das ist der Grund wieso meine Applikation auf keinen Fall eine Konsolen-Meldung verursachen darf/soll wenn sie irgendwie abraucht. Wenn aus Dummheit eine Nullpointer Exception geworfen wird die bis zur Konsole gelangt, werden gleich Mails verschickt.
    Ich checke natürlich auch die Gültigkeit von Daten die verarbeitet werden bei allen Funktionen. Aber es gibt immer irgendwo eine Stelle von der man nicht erwartet, dass sie mal abdreht.

    Ich müsste die Applikation irgendwie auf MUTE stellen können. Sie darf einfach keinen Pieps von sich aus abgeben.
    Deshalb hatte ich die Idee:

    main blahblah(args[])
    try{
      new Main();
    }
    catch (Exception e){/* be quiet */}
    

    Aber schlau ist das sicher nicht...

    Danke!



  • Polizeisperre. Bitte der Umleitung folgen.

    System.setErr(new PrintStream(new FileOutptStream("c:\\log.txt")));
    

    Das gleiche für setOut



  • Rock ´n Roll... ähh ich meine: "Vielen Dank Herr Polizist!" 😉


Anmelden zum Antworten