C'est une mauvaise idée de transformer UnknownHostException en IllegalArgumentException.
Il manque une méthode readObject().
Il manque une méthode hashCode().
Il ne faut pas utiliser "transient".