カスタム例外クラスを送出する
JSONに対応付けるドメインエラーを定義します
「カスタム例外クラスを送出する」はCoddyKit上の無料Flask Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはFlask Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Flask Academyコースには全4レッスンが含まれています。
ドメインを表すエラー
400のような番号は汎用的です。カスタム例外を使うと、支払いの失敗やクォータ超過など、実際の問題を名前で表せます。
例外をサブクラス化する
まず、Exceptionを継承するクラスを定義します。これにより、明確で自分で発生させられるエラーを作れます。
class PaymentError(Exception):
passステータスコードを追加する
クラスにstatus_code属性を設定すると、エラーが発生したときに送信するHTTPコードをハンドラーが判断できます。
class PaymentError(Exception):
status_code = 402メッセージを持たせる
コンストラクターで、人が読めるメッセージを保存します。後でハンドラーがそれを読み取り、レスポンスボディに設定できます。
def __init__(self, message):
self.message = messageビューで発生させる
問題が起きたときは、ビュー内で単にraiseしてエラーを発生させます。するとFlaskが対応するハンドラーを探します。
if not paid:
raise PaymentError("Card declined")カスタムクラスを処理する
独自のクラスに対するerrorhandlerを登録します。ハンドラーはインスタンスを受け取るため、メッセージとステータスコードの両方を読み取れます。
@app.errorhandler(PaymentError)
def on_pay(e):
return e.message, e.status_codeそこからJSONを返す
APIでは、ハンドラー内でエラーをJSONに変換します。クライアントは、確実に解析できる構造化されたエラーを受け取れます。
return jsonify(error=e.message), e.status_code複数のエラーに1つの基底クラスを使う
1つの基底クラスを作り、具体的なエラーにそれを継承させます。これで、1つのハンドラーですべてのエラー種別に対応できます。
class ApiError(Exception):
pass適切なデフォルト値を設定する
基底クラスに400などのデフォルトのstatus_codeを設定します。サブクラスでは、別のコードが必要な場合だけ上書きします。
class ApiError(Exception):
status_code = 400ロジックをビューから分離する
ドメインエラーを発生させれば、ビューを短く保てます。フォーマット処理はハンドラーが担当するため、各ビューは何が問題だったかを示すだけで済みます。
この方法が拡張しやすい理由
アプリが成長しても、カスタム例外によってエラー処理を1か所に整理できます。新しいエラー種別も、同じクリーンな処理の流れに組み込めます。
クイックチェック
ビューからドメインエラーを発生させるにはどうしますか?
まとめ
カスタム例外クラスにステータスコードとメッセージを持たせ、ビューで発生させ、整ったJSONに対応付けました。すばらしいです!
AI チューターと学ぶ Python — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「カスタム例外クラスを送出する」レッスンは無料ですか?
はい。「カスタム例外クラスを送出する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Flask Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Flask Academyコースには全4レッスンが含まれています。
「カスタム例外クラスを送出する」で何を学びますか?
JSONに対応付けるドメインエラーを定義します ブラウザで直接実行するハンズオンコードでFlask Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Flask Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのFlask Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「カスタム例外クラスを送出する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このFlask Academyレッスンでコードを書いて実行できますか?
はい。すべてのFlask Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- abortとHTTPエラーコード
- errorhandler関数を登録する
- カスタム例外クラスを送出する
- 統一されたJSONエラーエンベロープ