プラグイン内部で発生した例外のうち、そのプラグイン自身によって補足されなかった物は、すべて、入力メッセージに対するエラーレスポンスとして返されます。この時のエラーレスポンスのステータスコードは500
(Internal Errorを意味する)です。
整形されたエラー情報を返したい場合は、低レベルのエラーを捕捉した上で、Droonga::ErrorMessage::BadRequest
またはDroonga::ErrorMessage::InternalServerError
を継承したカスタムエラークラスでラップして再度raise
して下さい。
(ちなみに、これらの基底クラスはプラグインの名前空間に初期状態でinclude
されているため、エラークラスの定義時には単にclass CustomError < BadRequest
などと書くだけで参照できます。)
組み込みのプラグインやDroonga Engine自身によってあらかじめ定義されているエラークラスとしては、以下の物があります。
Droonga::ErrorMessage::NotFound
データセットまたは指定された情報ソースの中に、探している情報が見つからなかったことを示す。例:
# 第2引数はエラーの詳細な情報。(省略可能)
raise Droonga::NotFound.new("#{name} is not found!", :elapsed_time => elapsed_time)
Droonga::ErrorMessage::BadRequest
文法エラーやバリデーションエラーなど、入力メッセージ自体にエラーが含まれていたことを示す。例:
# 第2引数はエラーの詳細な情報。(省略可能)
raise Droonga::NotFound.new("Syntax error in #{query}!", :detail => detail)
Droonga::ErrorMessage::InternalServerError
タイムアウト、ファイル入出力のエラーなど、その他の未知のエラーであることを示す。例:
# 第2引数はエラーの詳細な情報。(省略可能)
raise Droonga::MessageProcessingError.new("busy!", :elapsed_time => elapsed_time)
エラーのステータスコードとしては、以下のステータスコードか、もしくは慣習に従ったステータスコードを使用します。
Droonga::StatusCode::OK
200
と等価。Droonga::StatusCode::NOT_FOUND
404
と等価。Droonga::StatusCode::BAD_REQUEST
400
と等価。Droonga::StatusCode::INTERNAL_ERROR
500
と等価。