Petite règle qui peut aider au choix du type d'exception entre Checked et Unchecked :

Si l'appelant d'une méthode ne peut rien faire pour résoudre le problème quand une exception est levée, alors rendez cette exception Unchecked [Via]

Pour rappel, une exception est dite Checked quand elle est déclaré dans une clause throws d'une méthode, ce qui permet au compilateur d'effectuer la vérification du traitement des exceptions lors de la compilation. Les exception dites Unchecked, héritent de RuntimeException et servent surtout à signaler des erreurs pour lesquelles la poursuite de l'exécution est difficile, voire impossible.

PS : Un peu de lecture pour les puristes.