Django チュートリアルのコード:
try:
selected_choice = p.choice_set.get(pk=request.POST['choice'])
except (KeyError, Choice.DoesNotExist):
# The rest of code...
ここに 2 つの例外があるのはなぜですか?KeyErrorとChoice.DoesNotExist?
彼らは平等ではありませんか?それらの違いは何ですか?
Django チュートリアルのコード:
try:
selected_choice = p.choice_set.get(pk=request.POST['choice'])
except (KeyError, Choice.DoesNotExist):
# The rest of code...
ここに 2 つの例外があるのはなぜですか?KeyErrorとChoice.DoesNotExist?
彼らは平等ではありませんか?それらの違いは何ですか?
KeyErrorによって引き上げられる可能性がありますrequest.POST['choice']。存在しないキーにアクセスしようとすると発生する辞書の Python エラーです。
DoesNotExistデータベースからオブジェクトを取得しようとして、それが存在しない場合に発生する DB インターフェイスの Django フレームワーク エラーです。
Choice.DoesNotExistから継承しますDoesNotExistが、モデルに対してのみであるため、次のChoiceようなことをしたときにChoice.objects.get(...)インスタンスが存在しない場合に発生します。
request.POST['choice']失敗した場合、生成されますKeyError。
もう1つは次のとおりです。
exception ObjectDoesNotExist
The DoesNotExist exception is raised when an object is not found for the given parameters of a query.
を入れないKeyErrorと、システムはエラーを発生させ、キャプチャされないexceptため役に立たなくなり、その逆も同様です。KeyError