исключение для повышения даты и времени

Я пытаюсь проверить, является ли дата действительной, используя повышение date_time, Документация говорит, что она выдаст исключение, если дата недействительна. Теперь я пытаюсь использовать try-catch, если дата действительно неверна, но каким-то образом моя программа по-прежнему выбрасывается и останавливается.

простой тестовый код:

#include "boost/date_time/gregorian/gregorian.hpp"#include <iostream>

int main()
{
int year = 2013;
int month = 1;
int day = 50;

try
{
boost::gregorian::date d(year, month, day);

throw 20;
}
catch (int e)
{
std::cout << "error! date does not excist!" << std::endl;
std::cout << "error no: " << e << std::endl;
}

return 0;
}

последний вопрос:
Как правильно использовать date_time для проверки даты?

0

Решение

boost::gregorian::date бросает std::out_of_range Напечатайте исключения, когда день, месяц или год находятся вне диапазона.
Ваш блок catch ловит исключение int тип. Вам нужно использовать блок catch с типом std::out_of_range чтобы поймать конкретное исключение.

Кроме того, нет необходимости использовать throw(20) утверждение в вашем блоке try.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]