Почему строчки
int id = Integer.parseInt(reader.readLine());
            String name = reader.readLine();
Обязательно должны быть внутри блока try? Почему их нельзя оставить просто в пределах цикла?
public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        boolean mark = true;
        HashMap <String, Integer> list = new HashMap<>();

        while (mark){

            int id = Integer.parseInt(reader.readLine());
            String name = reader.readLine();

            try {
                if(name.isEmpty()) {
                    mark = false;
                }
                list.put(name, id);

            }catch (Exception e){
                break;
            }
        }

        for(Map.Entry entry: list.entrySet()){
            System.out.println(entry.getValue() + " " + entry.getKey());
        }
    }
}