title | layout |
---|---|
プラグインでのエラーの扱い |
ja |
{% comment %} ############################################## THIS FILE IS AUTOMATICALLY GENERATED FROM "_po/ja/reference/1.0.4/plugin/error/index.po" DO NOT EDIT THIS FILE MANUALLY! ############################################## {% endcomment %}
- TOC {:toc}
プラグイン内部で発生した例外のうち、そのプラグイン自身によって補足されなかった物は、すべて、入力メッセージに対するエラーレスポンスとして返されます。この時のエラーレスポンスのステータスコードは500
(Internal Errorを意味する)です。
整形されたエラー情報を返したい場合は、低レベルのエラーを捕捉した上で、Droonga::ErrorMessage::BadRequest
またはDroonga::ErrorMessage::InternalServerError
を継承したカスタムエラークラスでラップして再度raise
して下さい。
(ちなみに、これらの基底クラスはプラグインの名前空間に初期状態でinclude
されているため、エラークラスの定義時には単にclass CustomError < BadRequest
などと書くだけで参照できます。)
組み込みのプラグインやDroonga Engine自身によってあらかじめ定義されているエラークラスとしては、以下の物があります。
データセットまたは指定された情報ソースの中に、探している情報が見つからなかったことを示す。例:
# 第2引数はエラーの詳細な情報。(省略可能)
raise Droonga::NotFound.new("#{name} is not found!", :elapsed_time => elapsed_time)
文法エラーやバリデーションエラーなど、入力メッセージ自体にエラーが含まれていたことを示す。例:
# 第2引数はエラーの詳細な情報。(省略可能)
raise Droonga::NotFound.new("Syntax error in #{query}!", :detail => detail)
タイムアウト、ファイル入出力のエラーなど、その他の未知のエラーであることを示す。例:
# 第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
と等価。