我有一个问题: 是否可以简化这些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?
答案 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());