是否可以简化此尝试捕获?

时间:2018-10-23 22:40:35

标签: java try-catch

我有一个问题: 是否可以简化这些try catch?

是否可能只有一个try catch并在一个catch中进行转换? (例如,“如果ligne1 == null,则ligne 1 =“”,如果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 = "";
}

编辑: 如果getElementsByTagName返回null,则item(0)引发NullPointerException。一种解决方案是测试getElementsByTagName是否返回Null?

1 个答案:

答案 0 :(得分:1)

您应该从不执行以下操作:

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());