Извините, нет, не существует простого программного способа определить, какая переменная или вызов метода является источником исключения. Вы можете использовать что-то вроде Аспектно-ориентированное программирование (AOP) , например AspectJ , но это не присуще языку и обычно не включается в программу просто для целей отладки.
if (var==null) -> too much work
try { } catch() { }
Debugger
Я знаю, что вы не хотите это слышать, но это просто стоимость ведения бизнеса.
if (this.superSL.items.get(name).getSource().compareTo(VIsualShoppingList.Source_EXTRA)==0) {
Необычно видеть так много связанных друг с другом вызовов методов. Я полагаю, что вам лучше всего привыкнуть разбивать их больше - не обязательно до 1 звонка на линию, но меньше, чем это. Почему?
1) Correctness
- допустимо ли в проекте для одного из этих вызовов вернуть значение null? Если это так, вам следует разобраться с этим, проверить его и надлежащим образом обработать.
2) Understandability
- будущим сопровождающим (включая будущие вы ) будет легче понять, если вы используете промежуточные, хорошо названные переменные, чтобы прояснить, что происходит в этой строке.
3) Efficiency
- обычно, когда вы углубляетесь в график (объединяя серию вызовов методов), вполне вероятно, что вам потребуется вернуться туда позже. Захват этого промежуточного значения в промежуточной переменной означает избегание повторного вызова одного или нескольких методов.
4) Debugging
- как показывает ваш вопрос, разбиение сложной строки таким образом упрощает отладку. сузив возможный источник исключения.