class AppError(Exception):
pass
class MissingInputError(AppError):
pass
class ValidationError(AppError):
pass
...
def validate(self):
""" Validate Input and save it """
params = self.__params
if 'key' in params:
self.__validateKey(escape(params['key'][0]))
else:
raise MissingInputError
if 'svc' in params:
self.__validateService(escape(params['svc'][0]))
else:
raise MissingInputError
if 'dt' in params:
self.__validateDate(escape(params['dt'][0]))
else:
raise MissingInputError
def __validateMulti(self, m):
""" Validate Multiple Days Request"""
if m not in Input.__validDays:
raise ValidationError
self.__dCast = int(m)
validate() と __validateMulti() は、渡された入力パラメータを検証して保存するクラスのメソッドです。コードから明らかなように、一部の入力パラメーターが欠落している場合や一部の検証が失敗した場合に、いくつかのカスタム例外を発生させます。
アプリに固有のカスタム エラー コードとエラー メッセージをいくつか定義したいと思います。
エラー 1100: 「キー パラメータが見つかりません。入力内容を確認してください。」
エラー 1101:「日付パラメーターが見つかりません。入力内容を確認してください」
...
エラー 2100: 「複数日パラメーターは無効です。使用できる値は 2、5、および 7 です。」
そして、それをユーザーに報告します。
- カスタム例外でこれらのエラー コードとエラー メッセージを定義するにはどうすればよいですか?
- 表示するエラーコード/メッセージを知る方法で例外を発生/トラップするにはどうすればよいですか?
(PS: これは Python 2.4.3 用です)。
Bastien Léonard は、このSO コメントで、常に新しいorを定義する必要はないと述べています。デフォルトでは、引数は self.args に配置され、 によって出力されます。__init__
__str__
__str__
したがって、私が好む解決策:
class AppError(Exception): pass
class MissingInputError(AppError):
# define the error codes & messages here
em = {1101: "Some error here. Please verify.", \
1102: "Another here. Please verify.", \
1103: "One more here. Please verify.", \
1104: "That was idiotic. Please verify."}
使用法:
try:
# do something here that calls
# raise MissingInputError(1101)
except MissingInputError, e
print "%d: %s" % (e.args[0], e.em[e.args[0]])