c++ make constructor fails if bad argument

#include <iostream>
#include <stdexcept>

class MyClass {
public:
    MyClass(int value) : data(validate(value)) {}

private:
    int data;

    int validate(int value) {
        if (value < 0) {
            throw std::invalid_argument("Invalid argument: value must be non-negative");
        }
        return value;
    }
};

int main() {
    try {
        MyClass myObject(-5);
    } catch (const std::invalid_argument& e) {
        std::cerr << "Exception caught: " << e.what() << std::endl;
    }

    return 0;
}