2011-05-16 2 views
6

C'est une chose difficile et c'est probablement mon style de vie obsolète, mais je me demandais pourquoi la hiérarchie des classes d'exceptions standard est configurée telle qu'elle est. Toutes les exceptions bad_ * ne sont-elles pas toutes des sous-classes de lang_support_error? Et ios_base :: failure semble complètement hors de propos.Raisons de la structure de la hiérarchie des exceptions standard

Y a-t-il des raisons historiques ou techniques que la hiérarchie a fini comme ça?

+3

va juste pour montrer à quel point (et essentiellement inutile), il est de concevoir des hiérarchies d'exception :-) –

Répondre

3

Si je me souviens bien, la logique était:

  • logic_error serait l'équivalent d'un assert, mais avec un comportement moins drastique
  • runtime_error serait la base de tous les autres

Cependant, comme vous l'avez remarqué, il ne tient pas tout à fait, même dans la bibliothèque standard elle-même.

Le principal problème que je suppose est la subjectivité: est std::out_of_range un logic_error ou un runtime_error?

Il est subjective ...

Questions connexes