J'ai vu récemment que le coup de pouce program_options bibliothèque jette un logic_error si la ligne de commande d'entrée étaient non-analysables. Qui a contesté mes hypothèses sur logic_error vs runtime_error.
Je suppose que les erreurs de logique (logic_error et ses classes dérivées) ont été les problèmes résultant de défaillances internes à respecter le programme d'invariants, souvent sous la forme d'illégal des arguments à l'intérieur de l'API. En ce sens, ils sont largement équivalentes à faire VALOIR, mais destiné à être utilisé dans libéré de code (contrairement à l'ASSERTION qui ne sont pas habituellement compilées dans code publié.) Ils sont utiles dans les situations où il est impossible d'intégrer des composants logiciels distincts dans le debug/versions de test ou les conséquences d'un échec sont telles qu'il est important de donner à l'exécution de la rétroaction au sujet de la non valide invariant condition à l'utilisateur.
De même, j'ai pensé que runtime_errors résulte exclusivement à l'exécution des conditions hors du contrôle de la programmeur: erreurs d'e/S, entrée utilisateur non valide, etc.
Cependant, program_options est évidemment fortement (surtout?) utilisé comme un moyen de l'analyse d'entrée de l'utilisateur final, donc dans mon modèle mental, il ne devrait certainement jeter un runtime_error dans le cas de mauvaise saisie.
Où vais-je tort? Êtes-vous d'accord avec le coup de pouce modèle d'exception de frappe?