bad_expression

class regex_error : public std::runtime_error

regex_error クラスは、正規表現を表す文字列を有限状態マシンに変換する際に発生したエラーを報告するのに投げられる例外オブジェクトの型を定義する。

概要

#include <boost/pattern_except.hpp>

namespace boost{

class regex_error : public std::runtime_error
{
public:
   explicit regex_error(const std::string& s, regex_constants::error_type err, std::ptrdiff_t pos);
   explicit regex_error(boost::regex_constants::error_type err);
   boost::regex_constants::error_type code()const;
   std::ptrdiff_t position()const;
};

typedef regex_error bad_pattern; // 後方互換のため
typedef regex_error bad_expression; // 後方互換のため

} // namespace boost

説明

regex_error(const std::string &s, regex_constants::error_type err, std::ptrdiff_t pos)
regex_error(boost::regex_constants::error_type err)
効果

regex_error クラスのオブジェクトを構築する。

boost::regex_constants::error_type code() const
効果

発生した解析エラーを表すエラーコードを返す。

std::ptrdiff_t position() const
効果

解析が停止した正規表現内の位置を返す。

補足

regex_error の基本クラスに std::runtime_error を選択したことについては議論の余地がある。ライブラリの使い方という点では、例外は論理エラー(プログラマが正規表現を与える)、実行時エラー(ユーザが正規表現を与える)のいずれでもよいと考えられる。このライブラリは以前はエラーに bad_patternbad_expression を使っていたが、Technical Report on C++ Library Extension と同期をとるために regex_error クラスに一本化した。