java - punteros - ¿Por qué un archivo de clase no contiene información suficiente para proporcionar el nombre del puntero que era nulo en un NPE?
que es un apuntador en programacion (3)
La excepción actual apunta a una instrucción particular de bytecode, pero una declaración de idioma puede expandirse en docenas de instrucciones con una media docena de punteros diferentes referenciados. Además, es posible que los punteros se hayan almacenado temporalmente (pila de códigos de bytes) durante la duración de varias instrucciones, por lo que es probable que se pierda la asociación con un nombre de variable específico.
Un depurador sofisticado podría adivinar correctamente la variable que fue "defectuosa", pero, hablando en general, señalar la declaración fallida debería ser suficiente (aunque teniendo en cuenta que la falla puede deberse a un enunciado anterior cuya acción fue diferido).
¿En respuesta a la NullPointerException de Can Java se puede cambiar para informar qué variable era nula? thorbjorn-ravn-andersen dice:
No, la información de depuración en el archivo de clase no contiene suficiente información para permitir esto.
Mi pregunta es, ¿por qué no?
Porque el número de línea en el código es suficiente para rastrearlo.
Puede que no haya sido una variable en absoluto: puede haber sido un resultado temporal, por ejemplo, el resultado de una llamada a un método. Para cuando se produce el NPE, es solo un espacio anónimo de pila.