Как обернуть проверенные исключения, но сохранить исходные исключения времени выполнения в Java

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

25
задан AlikElzin-kilaka 27 September 2016 в 08:06
поделиться

2 ответа

Вы можете переписать то же самое, используя оператор instanceof

try {
    // some code that can throw both checked and runtime exception
} catch (Exception e) {
    if (e instanceof RuntimeException) {
        throw e;
    } else {
        throw new RuntimeException(e);
    }
}

Однако, ваше решение выглядит лучше.

1
ответ дан Tionio 27 September 2016 в 08:06
поделиться

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

try {
  // code that can throw
}
catch (Exception e) {
  throw (e instanceof RuntimeException) ? (RuntimeException) e : new RuntimeException(e);
}

Это не требует дополнительных методов или catch блоки, поэтому мне это нравится.

1
ответ дан 27 September 2016 в 08:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: