我正在尝试使用提升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验证日期的正确方法是什么?
答案 0 :(得分:0)
boost::gregorian::date
会抛出std::out_of_range
类型例外。
您的catch块捕获int
类型的异常。您需要使用类型为std::out_of_range
的catch块来捕获特定的异常。
此外,您无需在try块中使用throw(20)
语句。