2013-03-03 3 views
0

Я пытаюсь проверить, действительна ли дата с помощью boost date_time. В документации говорится, что он выдаст исключение, если дата недействительна. Теперь я пытаюсь использовать Try-улов, если дата действительно инвалид, но как-то моя программа все еще выкинут и останавливается ..форсировать дату время catching исключение

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

#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 throws std::out_of_range тип исключений, когда день, месяц или год выходят за границы. Ваш ловушка блокирует исключение int типа. Вам нужно использовать блок catch с типом std::out_of_range, чтобы поймать конкретное исключение.

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

+0

Упс, я думаю, мне нужно снова прочитать раздел try/catch: p спасибо! – Robert

+0

btw, это правильный метод проверки даты? – Robert

Смежные вопросы