Можно ли упростить эту попытку поймать? - PullRequest
0 голосов
/ 24 октября 2018

У меня есть вопрос: можно ли упростить эти попытки улова?

Можно ли иметь только одну попытку улова и выполнить преобразование в одном улове?(Например, "Если ligne1 == null, ligne 1 =" ", if pays == null, pays =" "и т. Д ...) Большое спасибо:)

try {
    ligne1 = lignes.item(0).getAttributes().item(0).getTextContent();
}catch (NullPointerException e){
    ligne1 = "";
}
try{
    ligne2 = lignes.item(1).getAttributes().item(0).getTextContent();
}catch (NullPointerException e){
    ligne2 = "";
}
try{
    ville = address.getElementsByTagName("city").item(0).getAttributes().item(0).getTextContent();
}catch (NullPointerException e){
    ville = "";
}
try {
    pays = address.getElementsByTagName("country").item(0).getAttributes().item(0).getTextContent();
}catch (NullPointerException e){
    pays = "";
}

РЕДАКТИРОВАТЬ: NullPointerExceptionгенерируется item (0), если getElementsByTagName возвращает значение null. Решением может быть проверка, возвращает ли getElementsByTagName значение Null или нет?

1 Ответ

0 голосов
/ 24 октября 2018

Вы должны никогда делать:

catch (NullPointerException e) {
    //....
} 

Не делать в попытке / поймать, что должно быть сделано в случае if / else.Вместо этого, почему бы просто не создать метод для этого:

public String emptyIfNull(String input) {
    return input == null ? "" : input;
}

ligne1 = emptyIfNull(lignes.item(0).getAttributes().item(0).getTextContent());
ligne2 = emptyIfNull(lignes.item(1).getAttributes().item(0).getTextContent());
ville = emptyIfNull(address.getElementsByTagName("city").item(0).getAttributes()
        .item(0).getTextContent());
pays = emptyIfNull(address.getElementsByTagName("country").item(0).getAttributes()
        .item(0).getTextContent());
...