Я пытаюсь добавить обработку исключений к этому коду.Код работает нормально, но я ищу предложения для других возможных / лучших опций для обработки исключений.
Примечание. Этот код является базовым кодом для поиска и распечатки дубликатов.Это не основной фокус рассматриваемой концепции.
import java.util.HashMap;
import java.util.Map;
public class Duplicate {
public static void main(String args[]) throws Exception{
String str = " ";
Map<Character, Integer> mapOfDuplicates = findDuplicate(str);
for(Character each: mapOfDuplicates.keySet()) {
if(mapOfDuplicates.get(each)>1)
System.out.println(each + " " + mapOfDuplicates.get(each));
}
}
private static Map<Character, Integer> findDuplicate(String str) throws Exception {
if(str.isEmpty() || str==null || str.trim().isEmpty()) {
throw new Exception("Empty or null String not allowed");
}
char[] inChar = str.toCharArray();
Map<Character, Integer> finalMap = new HashMap<>();
for(char eachChar: inChar) {
if(finalMap.containsKey(eachChar)) {
int valueInHM = finalMap.get(eachChar);
valueInHM++;
finalMap.put(eachChar, valueInHM);
} else {
finalMap.put(eachChar, 1);
}
}
return finalMap;
}
}
Есть два способа справиться с этим -
- Добавить условие в метод -
if(str==null) {
throw new IllegalArgumentException("Null not
}
Добавить NullPointerException в конце метода -
private static Map<Character, Integer> findDuplicate(String str) {
Map<Character, Integer> finalMap = new HashMap<>();
try {
char[] inChar = str.toCharArray();
for (char eachChar : inChar) {
if (finalMap.containsKey(eachChar)) {
int valueInHM = finalMap.get(eachChar);
valueInHM++;
finalMap.put(eachChar, valueInHM);
} else {
finalMap.put(eachChar, 1);
}
}
} catch (NullPointerException npe) {
System.out.println("null not allowed");
}
return finalMap;
}
Какой из них более предпочтителен и почему?
Более того, методы get и put генерируют исключения вроде -
1. UnsupportedOperationException
2. ClassCastException
3. NullPointerException
4. IllegalArgumentException
Как мы можем обработать эти исключения?