Нулевой указатель в блоке catch - PullRequest
3 голосов
/ 23 декабря 2011

Я использую блок try catch для отлова исключения. Консоль показывает, что она выбрасывает нулевое значение. Но это не собирается в блоке улова.

try {
        System.out.println("Exception here "+SomeObject.getValue());
    } catch (NullPointerException e) {
        // TODO: handle exception
        SomeObject so = new SomeObject();
    }
    SomeObject.setValue(); 
}

Как это могло быть обработано. Могу ли я также использовать метод уровня throws NullPointerException?

Ответы [ 3 ]

3 голосов
/ 23 декабря 2011

Это действительно пошло бы внутри блока захвата.В строке есть еще одно потенциальное исключение NullPointerException (при условии, что вы пытаетесь сказать)

so.setValue(); 

Сказав, что не рекомендуется создавать исключение RuntimeException.Лучше обрабатывать исключение NullPointerException в своем коде не с помощью try / catch, а с помощью простой проверки условий

0 голосов
/ 23 декабря 2011

Вы можете поместить другой блок try в catch

try {
    doSomething();
} catch (IOException) {
         try {
                  doSomething();
         } catch (IOException e) {
                 throw new ApplicationException("Failed twice at doSomething" +
                 e.toString());
         }          
} catch (Exception e) {
}
0 голосов
/ 23 декабря 2011

Плохая идея отлавливать UnChecked Exceptions, вместо того, чтобы перехватывать NullPointerExcetpion, вы можете просто проверить нулевые значения в условии If.

if(SomeObject.getValue()!=null)
System.out.println(SomeObject.getValue());
...