Множество функций и объявлений, но невозможно проверить значение null. Элегантный способ обработки исключения nullpointerexception?

Я стою перед дилеммой.

  • У меня есть 10 функций, каждая из которых инициализирует переменные.
  • Функции вызываются в try-catch. утверждение.

Проблема в том, что когда инициализация любой из этих переменных вызывает исключение nullpointerexception, весь цикл try catch останавливается / прерывается, а все другие / следующие переменные внутри и вне функции и других функций никогда не затрагиваются.

Как можно без написания 10 операторов try catch, без необходимости писать много избыточного кода в целом?, напишите простую "вещь", которая принимает переменную, которая вызывает исключение nullpointerexception, и просто устанавливает для переменной значение null?

Псевдо-код Java:

Class object123;
Class objectabc;
...

Constructor () {
    object123 = new Class Name()
    objectabc = new Class Name()
    ...
}

try {
    function123()
    functionabc()
    ...
} 
catch JSONException {
  Log.i("Exception logcat", "I hate kotlin & Java and I hate exception-handling") 
}

function123() {
    object123.specificvar = json_arrays_and_objects.specificvar
}

functionabc() {
    objectabc.specificvar = json_arrays_and_objects.specificvar
}
...
 

Откуда взялся http_Response_var_array?

Madlemon 31.03.2021 13:26

Люди I hate kotlin & Java and I hate exception-handling зарабатывают на жизнь, используя и развивая эти технологии, писать это довольно неуважительно, кроме того, это действительно совершенно неуместно и действительно не добавляет ценности вашему вопросу

a_local_nobody 31.03.2021 13:31

Похоже, у вас XY проблема.

Madlemon 31.03.2021 13:37

Также обратите внимание, что конструкция «try catch» не является циклом, это просто блок. Если вы хотите перехватывать исключения для каждой функции в блоке отдельно, вам понадобится отдельный try-catch для каждой из них. Но в идеале такая обработка значений по умолчанию должна происходить внутри функций, а не снаружи.

Hulk 31.03.2021 13:55

@Hulk Я думал то же самое, но на самом деле студия Android говорит, добавляя оператор continue к блоку catch -> «вне цикла». Возможно, я неправильно понял это, но это не имеет значения для вопроса. Ответ на ответ ниже: Спасибо за информацию. Я удалю "петлю" из вопроса.

StellarEquilibrium 31.03.2021 13:56

У вас нет цикла, поэтому размещение continue в любом месте этого кода всегда "вне цикла". continue работает только в циклах (т.е. for, while).

Hulk 31.03.2021 13:57

На более подробном примере я мог бы быть более полезным. Лучше всего проверить свой json_arrays_and_objects на наличие нуля в ваших функциях: object123.specificvar = json_arrays_and_objects==null?null:json_arrays_and_objects.s‌​pecificvar;

Madlemon 31.03.2021 14:13

@Madlemon, тогда мне пришлось бы проделать это дюжину раз. Если мы пойдем по этому пути, я бы НАМНОГО лучше написал 10 операторов try catch.

StellarEquilibrium 31.03.2021 14:16
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
8
33
0

Другие вопросы по теме