Я все еще новичок, и я действительно не понимаю цели исключений в программе.Вопросы об использовании исключений
Когда вы бросаете исключение, вы в основном пропускаете (небольшую или большую) часть своей программы, поэтому один из моих вопросов будет: должен ли исключение приводить к концу программы?
Кроме того, предположим, что у нас есть класс Rectangle. Это было бы определить по его длину и высоту, как это:
#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;
}
Однако, это не будет иметь большого смысла иметь отрицательную длину или высоту. Так должен ли я сделать исключение в конструкторе? Должен ли я использовать произвольное соглашение и принимать их абсолютную ценность? Должен ли я запретить пользователю в main() передавать отрицательные аргументы?
как ... Там нет ничего плохого в том, графический интерфейс проверки данных перед передачей его к объекту. Также, если объект защищает себя в конструкторе, это правильный путь. Почему оба? потому что иногда у вас нет контроля над обоими ... иногда ваш программист GUI и объект находятся вне вашего контроля. Иногда вы пишете объект, и вы не знаете, как будет использоваться этот объект. Когда вы передаете исключение в конструкторе, это потому, что у вас есть контракт с тем, кто когда-либо использовал ваш объект. Когда они нарушают этот контракт, вы получаете исключение. –