Вы не «ловите» NPE, как делаете.Получите строку от пользователя, посмотрите, будет ли она == null, а затем, если это так, используйте имя игрока по умолчанию.В псевдокоде:
call JOptionPane and get player name
If player name is null
create new Player with default name
else
create new Player with the user-entered name.
Нет необходимости в try / catch здесь.
Другой способ решить эту проблему - позволить конструктору Player принять пустую строку и изменить ее на значение по умолчанию:
public Player(String Pname,int Pscore)
{
name = (Pname == null || Pname.trim().isEmpty()) ? DEFAULT_NAME : Pname;
score = Pscore;
}