Ich bin immer noch ein Anfänger und ich verstehe nicht wirklich den Zweck von Ausnahmen in einem Programm.Fragen über Ausnahmen verwenden
Wenn Sie eine Ausnahme auslösen, überspringen Sie grundsätzlich einen (kleinen oder großen) Teil Ihres Programms, also wäre eine meiner Fragen: Sollte eine Ausnahme zum Ende des Programms führen?
Angenommen, wir haben eine Klasse Rectangle. Es wäre zu definieren, durch seine Länge und seine Höhe wie folgt aus:
#include <iostream>
using namespace std;
class Rectangle {
public:
Rectangle(double length, double height)
{
if (length > 0 and heigth > 0) {
length_ = length;
height_ = height;
}
else {
// Throw an exception ? Use a convention ?
}
}
// other methods
private:
double length_;
double height_;
};
int main() {
// do stuff
return 0;
}
Allerdings wäre es nicht viel Sinn, eine negative Länge oder Höhe zu haben. Also sollte ich eine Ausnahme im Konstruktor werfen? Sollte ich eine willkürliche Konvention verwenden und ihren absoluten Wert nehmen? Sollte ich verhindern, dass der Benutzer in main() negative Argumente übergibt?
beide ... Es ist nichts falsch mit, die die GUI Validierung Daten, bevor sie zu einem Objekt vorbei. Auch das Objekt im Konstruktor zu schützen, ist der richtige Weg. Warum beides? weil du manchmal nicht die Kontrolle über beide hast ... manchmal ist dein GUI-Programmierer und das Objekt außer Kontrolle. Manchmal schreiben Sie das Objekt und Sie haben keine Ahnung, wie das Objekt verwendet wird. Wenn Sie eine Ausnahme im Konstruktor übergeben, liegt das daran, dass Sie einen Vertrag mit dem Benutzer haben, der Ihr Objekt verwendet. Wenn sie diesen Vertrag brechen, erheben Sie eine Ausnahme. –