Dies setzt voraus, dass wir die Methode .printstacktrace nicht aufrufen, sondern nur werfen und auffangen.
Wir erwägen dies bei einigen Leistungsengpässen.
Dies setzt voraus, dass wir die Methode .printstacktrace nicht aufrufen, sondern nur werfen und auffangen.
Wir erwägen dies bei einigen Leistungsengpässen.
Er wird nicht erst beim Aufruf der Methode printStackTrace() erstellt
Neal Gafter (ehemaliger Sun-Ingenieur im Team, das Java entwickelt) erwähnte die Ausnahmeleistung aquí :
Der teuerste Teil der Ausnahme Behandlung ist bei weitem die Aufzeichnung des Stack Trace bei der Erzeugung der Ausnahme
Siehe auch diese Frage .
Wie oben beantwortet, werden keine Stacktraces erzeugt, wenn eine Ausnahme ausgelöst wird. Vielmehr werden sie erzeugt, wenn die Ausnahme konstruiert wird. Ich habe es unten getestet. Meiner Meinung nach ist dies nicht intuitiv. Der Ort, an dem etwas Falsches passiert, ist der Ort, an dem die Ausnahme ausgelöst wird, nicht der, an dem sie konstruiert wird.
class ExceptionNewVsThrow {
private static RuntimeException instantiateException() {
return new RuntimeException("Hello");
}
private static void test1(Exception exception) throws Exception {
throw exception;
}
public static void main(String[] args) throws Exception {
Exception exception = instantiateException();
test1(exception);
}
}
Und die Ausgabe ist:
Exception in thread "main" java.lang.RuntimeException: Hello
at FSystem.experimental.exceptions.ExceptionNewVsThrow.instantiateException(ExceptionNewVsThrow.java:18)
at FSystem.experimental.exceptions.ExceptionNewVsThrow.main(ExceptionNewVsThrow.java:26)
Beachten Sie, dass der Stack-Trace Folgendes erwähnt Haupt y instantiateException , aber nicht test1
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.