2013-03-03 74 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