Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ boost日期时间捕获异常_C++_Validation_Date_Boost Date Time - Fatal编程技术网

C++ boost日期时间捕获异常

C++ boost日期时间捕获异常,c++,validation,date,boost-date-time,C++,Validation,Date,Boost Date Time,我正在尝试使用boostdate\u time检查日期是否有效。文档中说,如果日期无效,它将抛出异常。现在,如果日期确实无效,我一直在尝试使用try-catch,但不知何故,我的程序仍然被抛出并停止 简单测试代码: #include "boost/date_time/gregorian/gregorian.hpp" #include <iostream> int main() { int year = 2013; int month = 1; int day

我正在尝试使用boost
date\u 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;
}
#包括“boost/date\u time/gregorian/gregorian.hpp”
#包括
int main()
{
国际年=2013年;
整月=1;
国际日=50;
尝试
{
boost::gregorian::日期d(年、月、日);
投掷20枚;
}
捕获(INTE)
{

std::cout
boost::gregorian::date
在日、月或年超出范围时抛出
std::out\u of\u范围
类型异常。 您的catch块捕获类型为
int
的异常。您需要使用类型为
std::out\u of_range
的catch块来捕获特定异常


另外,在try块中不需要使用
throw(20)
语句。

oops,我想我必须再次阅读try/catch部分:p谢谢!顺便问一下,这是验证日期的正确方法吗?