2013-03-03 76 views
0

我试图用提升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

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

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

+0

哎呀,我想我必须再次阅读try/catch部分:p谢谢! – Robert 2013-03-03 06:15:56

+0

btw,这是一个验证日期的正确方法吗? – Robert 2013-03-03 06:16:39