Try catch исключает всегда возвращает null
У меня проблема с Android. Я разрабатываю на устройстве и имею проблему с улавливающими исключениями. Я запускаю некоторый код в AsyncTask и, наконец, упростил его:
try
{
if (true)
throw new Exception("ERROR");
}
catch (Exception e)
{
Log.e("e", "exception", e);
}
Моя проблема в том, что переменная 'e' всегда равна null. Не уверен, что происходит на самом деле. Что еще иногда работает, но я не могу сказать, когда. Я просто встаю с компьютера на несколько минут, вернусь и бум, это работает. Выполнение кодирования несколько минут, и снова это null... Был один вопрос о SO около года назад, но никто не знал ответ. Возможно, на этот раз у кого-то появится какая-то идея.
![Null exception]()
Я думаю, что это как-то связано с AsyncTask как за пределами этого, у меня есть исключение, зацепившееся правильно... до сих пор не знаю, почему:( Я обнаружил, что это происходит только при подключении debbuger. Когда я вынимаю кабель от устройства, которое он на самом деле ловит, а исключение больше не пусто...
Ответы
Ответ 1
Невозможно иметь e
с нулевым значением в этой точке. Если вы отлаживаете свое приложение с помощью Eclipse, оно отображает значение e.toString()
в этой точке, а e.toString()
возвращает null
.
Попробуйте выполнить другой тест, используя этот код:
try {
if (true) {
throw new Exception("ERROR");
}
}
catch (Exception e) {
if (e == null) {
Log.e("e", "e is really null!!!");
}
else {
Log.e("e", "e is not null, toString is " + e + " and message is " + e.getMessage());
}
}
Ответ 2
Я знаю, что это старый вопрос, но это произошло и со мной, и похоже, проблема связана с самим отладчиком!
Когда я запускаю приложение из eclipse (ctrl + F11), он получает правильное исключение (e != null
).
Ответ 3
У меня была такая же проблема... Я обнаружил, что это был отладчик, как говорили другие люди. Так что я сделал, чтобы отлаживать - просто поставить точку останова на первую строку блока catch, а не на блок catch. Казалось, работает на меня!
Ответ 4
У меня была такая же странная проблема внутри AsyncTask, при отладке на реальном устройстве (Galaxy Tab 2). (И да, я получил "e is really null!!!"
выполнение теста, предложенного @italo)
Для меня проблема таинственно исчезла после отсоединения USB-разъема устройства Android и последующего подключения к нему (и затем снова запустить мое приложение).
Другое предложение, очистка и восстановление проекта, как объяснил здесь, не решило его для меня (но, возможно, для кого-то еще).