提升日期时间捕获异常

时间:2013-03-03 05:42:50

标签: c++ validation date boost-date-time

我正在尝试使用提升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验证日期的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

当日,月或年超出范围时,

boost::gregorian::date会抛出std::out_of_range类型例外。 您的catch块捕获int类型的异常。您需要使用类型为std::out_of_range的catch块来捕获特定的异常。

此外,您无需在try块中使用throw(20)语句。