0

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 を使用して日付を検証する適切な方法は何ですか?

4

1 に答える 1

0

boost::gregorian::datestd::out_of_range日、月、または年が範囲外の場合、型例外をスローします。intあなたのcatchブロックはタイプの例外をキャッチします。std::out_of_range特定の例外をキャッチするには、タイプ付きのcatchブロックを使用する必要があります。

throw(20)また、 tryブロックでステートメントを使用する必要はありません。

于 2013-03-03T06:12:37.473 に答える