Обработка исключений - возможные пути в данном сценарии - PullRequest
0 голосов
/ 04 марта 2019

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

Примечание. Этот код является базовым кодом для поиска и распечатки дубликатов.Это не основной фокус рассматриваемой концепции.

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;
  }
}

Есть два способа справиться с этим -

  1. Добавить условие в метод -
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

Как мы можем обработать эти исключения?

1 Ответ

0 голосов
/ 04 марта 2019

Сохраняйте это простым:

if (str == null || str.isEmpty()) {
    throw new IllegalArgumentException("str may not be null/blank");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...