Я пытаюсь проверить, является ли дата действительной, используя повышение 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 для проверки даты?
boost::gregorian::date
бросает std::out_of_range
Напечатайте исключения, когда день, месяц или год находятся вне диапазона.
Ваш блок catch ловит исключение int
тип. Вам нужно использовать блок catch с типом std::out_of_range
чтобы поймать конкретное исключение.
Кроме того, нет необходимости использовать throw(20)
утверждение в вашем блоке try.
Других решений пока нет …