Esto es asumiendo que no llamamos al método .printstacktrace - simplemente lanzando y atrapando.¿Se generan trazas de pila cuando se lanza una excepción de Java?
Estamos considerando esto para algunos cuellos de botella de rendimiento.
Esto es asumiendo que no llamamos al método .printstacktrace - simplemente lanzando y atrapando.¿Se generan trazas de pila cuando se lanza una excepción de Java?
Estamos considerando esto para algunos cuellos de botella de rendimiento.
Sí. Los constructores Throwable() llaman a fillInStackTrace(). (Al menos en Sun/Oracle's JDK 6 para Windows.)
también, si le importa el rendimiento puede anular 'fillInStackTrace()' para no hacer nada –
Hay una diferencia entre lanzar una excepción y construir una. –
Tiene toda la razón, Andy. No leí la pregunta con cuidado. – perp
Stacktrace se captura cuando se construye una excepción.
Si realmente no te importa stacktrace, puedes construir una excepción una vez y lanzarla varias veces, pero parece un truco y puede ser confuso.
Un objeto arrojable captura la pila actual (usando código nativo) si se imprimirá o no. Esa es la razón por la cual las Excepciones no deben usarse (ab) para el flujo de control.
no se construye con pereza cuando el método printStackTrace() se llama
Neal Gafter (ex ingeniero de Sun en el equipo que construye Java) menciona el rendimiento excepción here:
La parte más cara de excepción de manipulación, con mucho, es la captura de la traza de la pila al crear la excepción
Además, vea this question.
Las excepciones cuestan mucho porque cada vez que se lanza una excepción, el rastreo de pila debe crearse y rellenarse. Imagine una operación de transferencia de saldos que falla en el 1% de los casos debido a la falta de fondos. Incluso con esta tasa relativamente baja de fallas, el rendimiento puede verse gravemente afectado. Vea el código fuente y los resultados del benchmark aquí: http://www.jquantlib.org/index.php/Cost_of_Exceptions_in_Java –
Si desea un rendimiento, no debería lanzar una excepción, solo debería ser para casos excepcionales que no afecten su rendimiento. Tal vez puedas hacer lo que intentas sin una excepción? –