Java - избавление от NullPointerException - PullRequest
0 голосов
/ 26 мая 2011

Подумайте о двух случаях case1 и case2 плюс два метода method1 и method2.Скажем, method1 решает case1, а method2 решает case2.Теперь у меня есть программа, которая может закончиться с case1 или case2.В моих кодах я вызываю method1 независимо от того, что происходит.Но если происходит случай case2, method1 дает nullpointerexception.

Я хочу следующее: мои коды должны сначала вызывать method1, если возникает исключение, то вызывается method2.Как я это сделаю?Поскольку у меня нет информации о попытках поймать, мне действительно нужна помощь!

Ответы [ 2 ]

3 голосов
/ 26 мая 2011

Вы можете сделать это:

    try {
        method1();
    }
    catch ( Exception e ) {
        method2();
    } 

Тем не менее, обычно лучше полагаться на исключения только для исключительных условий.Для нормального управления потоком вы можете использовать if:

    if ( isCase2() ) {
        method2();
    }
    else {
        method1();
    }
2 голосов
/ 26 мая 2011

Catching NullPointerException - плохая практика - вы можете поймать не то исключение, которое хотите поймать У вас есть два варианта:

1) Бросьте свое собственное исключение и поймайте его позже:

  public void method1(Case caze) throws MyException {
    if (case.getType() == CaseType.CaseOne) {
       // processing
    } else {
       throw new MyException("Wrong case type");
    }
  }

И код клиента:

try {
   method1(caze);
} catch (MyException e) {
   // log the excpetion
   method2(caze);
}

2) Возвращает логический флаг, указывающий, что обработка успешно завершена.

Помните, что всегда лучше анализировать значения, чем использовать механизм try-catch в ваших ситуациях. Я бы предложил вариант №2 для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...