0

我正在尝试使用 boost 检查日期是否有效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 验证日期的正确方法是什么?

4

1 回答 1

0

boost::gregorian::datestd::out_of_range当日、月或年超出范围时抛出类型异常。您的 catch 块捕获int类型的异常。您需要使用带有类型的 catch 块std::out_of_range来捕获特定异常。

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

于 2013-03-03T06:12:37.473 回答