Was sind die Nachteile einer Basisklasse für alle Ausnahmen?

8

Ich mache die Übungen von Stroustrups C ++ Programmiersprache 4. Edition. Eine der Aufgaben lautet so:

  

Verwenden Sie eine Klasse Exception als Basis aller Klassen, die als Ausnahmen verwendet werden. Wie sollte es aussehen? Wie sollte es verwendet werden? Was könnte es tun? Welche Nachteile ergeben sich möglicherweise aus der Anforderung, eine solche Klasse zu verwenden?

Die Antwort sieht fast wie std::exception aus, abgesehen vom Nachteil - der einzige, den ich mir vorstellen kann, sind die Kosten von __vptr , die normalerweise als vernachlässigbar betrachtet werden. Was fehlt mir hier?

    
sigil 17.11.2016, 19:22
quelle

1 Antwort

1

Der Nachteil ist, dass wenn Sie versuchen, eine Ausnahme zu fangen, die sich am Ende des Vererbungsbaums befindet, werden Sie alle Ausnahmen abfangen, die von diesem abgeleitet sind, und einige von ihnen können Dinge anzeigen, die sich sehr von dem unterscheiden, was Sie erwartet haben / p>

Schlimmer noch, ein Entwickler, der eine Menge Funktionen verwendet hat, die Exceptions auslösen können und nicht wissen, was einige von ihnen bedeuten, könnte einfach die Basisklasse Exception abfangen und nur eine unspezifische Exception-Instanz zurückgeben, wenn Fehler auftreten. es macht es schwierig, den Code zu debuggen, und möglicherweise verursacht das ganze Programm nur wegen einer leicht reparierbaren Ausnahme, die keine Probleme verursachen sollte.

    
theo2003 03.01.2017 12:33
quelle