Es gibt ein Try-Catch-Verfahren für Funktionen, das meiner Meinung nach manchmal recht nützlich sein kann:
bool function()
try
{
//do something
}
catch(exception_type & t)
{
//do something
}
Daher der erste Teil der Frage: Wird dieser Stil generell als schlecht angesehen?
Und das konkrete Beispiel, bei dem ich diesen Ansatz verwendet habe:
Wir hatten ein Projekt mit ziemlich viel Code in C und C++. Und dort hatten wir benutzerdefinierte Ausnahmetypen (nicht std::exception abgeleitet). Ich musste die XML-Bibliothek integrieren und alle Ausnahmen in unsere Typen umwandeln. Also, im Grunde war der letzte Schritt, um alle Ausnahmen von XML-Bibliothek zu fangen und konvertieren sie.
Funktion vorher:
bool readEntity(...)
{
while(...)
{
if(...)
{
//lot's of code...
}
}
}
nach:
bool readEntity(...)
try
{
while(...)
{
if(...)
{
//lot's of code...
}
}
}
catch(XMLBaseException & ex)
{
//create our exception and throw
}
Meine Gedanken gingen in etwa so: Ich erkläre klar meine Absicht, alle Ausnahmen, die von einem Typ abgeleitet sind, in einen benutzerdefinierten Typ umzuwandeln UND wir behalten unseren Bildschirm ohne horizontale Bildlaufleiste (denn horizontale Bildlaufleisten sind schlecht).
Nun, ich wurde für diesen Ansatz sogar ziemlich kritisiert, weil er bei der Codeüberprüfung nicht klar war.
Deshalb würde ich gerne Ihre Meinung dazu hören.
UPDATE Nur um das klarzustellen: Die Funktion zu überarbeiten war keine Option. Und eigentlich war es eine gut geschriebene.