Gibt es keine Möglichkeit (unabhängig davon, wie "hacky" es ist) zu erkennen, wenn System.err
von Java in geschrieben wurde, um Logik auszuführen, wenn und wenn dies geschieht? — Ich bin derzeit mit einer benutzerdefinierten Unterklasse von Thread
arbeite (sie es SwallowingThread
nennen), die eine Reihe von Ausnahmen bei der Umsetzung von Thread.run()
in ähnlicher Weise wie in den folgenden Code schluckt:Erkennen von Schreiben in Standardfehlerstrom
public final class SwallowingThread extends Thread {
...
@Override
public void run() {
ServerSocket socket = new ServerSocket(80, 100);
try {
Socket connected = socket.accept();
// Do stuff with socket here
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
In meinem Code, aber Ich möchte in der Lage sein, Fälle von UnknownHostException
und IOException
zu behandeln, die bei Verwendung einer Instanz von SwallowingThread
auftreten; Gibt es keine Möglichkeit zu erkennen, dass dieses Abfangen und Drucken auf den Standardfehler, nachdem es aufgetreten ist? — Ich hatte ursprünglich versucht, eine UncaughtExceptionHandler
zu schreiben, um dies nur zu tun, um herauszufinden, dass es die Ausnahmen nicht fängt, weil sie geschluckt wurden, anstatt einfach z. in eine RuntimeException
gewickelt und weiter geworfen.
Natürlich ist ein "besserer" Weg, dieses Problem zu lösen, die Logik für die Klasse neu zu schreiben, aber gibt es keine schnelle und schmutzige Möglichkeit, dieses Problem zu lösen, ohne zu berühren?
Sie konnten 'PrintStream' erstellen, die Wraps' System.err' vielleicht? 'System.setErr (neu MyDelegatingPrintStream (System.err));' –
Mögliches Duplikat von [Redirect System.out und System.err] (http://stackoverflow.com/questions/14715748/redirect-system-out-and- system-err) –
@MuratK, nein, ich möchte die Daten, die in stderr eingegeben wurden, nicht einfach an einen anderen Ort stellen: Ich möchte mal eine Logik ausführen können/wenn diese Daten in stderr geschrieben werden. – errantlinguist