Boost日期时间捕获异常

boost date time catching exception

本文关键字:捕获异常 时间 日期 Boost      更新时间:2023-10-16

我试图检查使用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来验证日期的正确方法是什么?

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

也没有必要在try块中使用throw(20)语句