Когда можно перехватить исключение NullPointerException?JAVA

Программисты JAVA общаются здесь
Anonymous
Когда можно перехватить исключение NullPointerException?

Сообщение Anonymous »

Эффективная Java рекомендует не перехватывать NullPointerException.
Всегда ли это правильно?

Во многих случаях перехвата NullPointerException тело перехвата вызывает только printStackTrace().

Если я не перехватываю NullPointerException и не вызываю printStackTrace(), как мне это сделать можно проверить место, где произошло исключение?

А также, если я перехватываю NullPointerException и тело catch пусто, мы не сможем получить никакой информации о стеке в это время, не так ли?

ОБНОВЛЕНИЕ

Я проанализировал статистику перехвата RuntimeException в исходном коде Google Android, AOSP4.2.2_r1.2.

Имеется 249 перехватов RuntimeException, а последующие действия представляют собой статистику тела перехвата.

Код: Выделить всё

42%: throw it again as other Exceptions (RuntimeException: 33%, others: 8%)

32%: just return null or 0/false/true or other default values

14%: just call log or printstacktrace

5%: just comment like "// Fall through.", "// ignore, not a valid type.", "// system process dead", "// do nothing"

2%: empty body

3%: display error messages or send fail codes (ex. network service discovery failed: replyToMessage(msg, NsdManager.STOP_DISCOVERY_FAILED, NsdManager.FAILURE_INTERNAL_ERROR); )

3%: intialize or reset related variables.
В большинстве случаев dalvik и external обрабатывают NPE, выдавая другие исключения.

Но платформы обычно обрабатывают это, возвращая null или другие значения.
  • Считаете ли вы, что выдача других исключений в catch-body не является плохой или хорошей обработкой?
  • Если NPE возникло на более высоком уровне уровни (например, приложения) и разработчик подтверждает, что исключение не является критическим, поскольку приложение полностью независимое, могу ли я согласиться, чтобы наш разработчик игнорировал NPE путем перехвата?
и еще одна вещь:

Могу ли я заключить, что исходный код Google Android Framework может быть нестабильным в аспектах RuntimeException?

Подробнее здесь: https://stackoverflow.com/questions/182 ... rexception

Вернуться в «JAVA»