./1122 >

Pour le reste, je crois que j'ai déjà expliqué mon point de vue, mais je vais en remettre une couche. (Et je pense que ce sera la dernière)
Bug ou erreur dans le déroulement du programme => exception. Toujours.
Ne pas vérifier l'entrée utilisateur est également un bug, donc ça doit lancer une exception. Dans ce cas précis, soit tu as une méthode CheckUserInput, avec un code de retour (à priori un booléen), soit tu interceptes l'exception qui se produit le cas échéant.
Et une dernière chose pour la route: Les exceptions ne doivent pas faire partie du cours d'exécution normal du programme. Et le déroulement normal, c'est les hypothèses que tu as fait sur l'exécution du programme. Par exemple: "le fichier abc.def existe toujours dans le répertoire d'installation" (hypothèse légitime), "l'utilisateur n'entrera jamais de valeur incorrecte" (très mauvaise hypothèse), "Windows est toujours installé dans C:/WINDOWS/" (très mauvaise hypothèse également) ou "La connexion au serveur serveur.vital.com ne doit jamais échouer" (hypothèse légitime).
Le fait que ces évènements ne doivent pas ce produire ne veut pas dire que tu ne dois en aucun cas les gérer, mais après c'est au cas par cas. Il ne faut surtout pas intercepter toutes les exceptions juste pour le plaisir, mais juste celles pour lesquelles ça a du sens. (Sinon tu va contre le principe même des exceptions)