Flask学習|エラーハンドリングの基本を学ぼう【チャプター6-02】

ながみえ

一つ前のページではFlaskでよくあるエラー集と対処法について学習しました。

今回は エラーハンドリングの基本 について見ていきましょう。

Chapter1:Flask入門編
Chapter2:Jinja2入門編
Chapter3:フィルター編
Chapter4:フォーム編
Chapter5:データベース編
Chapter6:エラーハンドリングとデバッグ編

 ・Chapter6-1:Flaskでよくあるエラー集と対処法
 ・Chapter6-2:エラーハンドリングの基本 ◁今回はここ
 ・Chapter6-3:カスタムエラーページを作ろう
 ・Chapter6-4:ログを出力してデバッグしよう
 ・Chapter6-5:デバッグモードを活用しよう
 ・Chapter6-6:Flask-DebugToolbarを使おう
Chapter7:アプリ開発編

Webアプリを開発していると、予期せぬエラーに遭遇することは避けられません。

エラーを適切に処理し、ユーザーに分かりやすく伝える仕組みは、アプリの品質と信頼性を大きく左右します。

この記事では、Flaskでの開発時に役立つ エラーハンドリングの基本 について学びます。

  • Flaskでエラーハンドリングが必要な理由
  • Pythonの try / except構文(概要のみ)
  • Flaskの abort() 関数の使い方
  • app.errorhandler() を使ったエラー処理のカスタマイズ

本記事は 有料記事(100円)ですが、現在は期間限定で無料公開中です。

<<前のページ

Flaskの記事一覧

次のページ>>

Flaskのエラーハンドリングとは?初心者向けに概要を解説

Flaskアプリケーションでは、ユーザーからの入力が不適切だったり、ファイルが見つからなかったりする場面でエラーが発生します。

こうしたエラーをそのまま放置するとアプリがクラッシュしたり、ユーザーに意味のわからないエラーメッセージが表示されてしまいます。

エラーの種類に応じた適切な対応を実装することで、アプリの安定性とユーザー体験を大幅に向上させることができます。

【Python】勉強猫がノートパソコンを前にして学習を始める様子。記事内の学習スタート用イラスト

【復習】Pythonのtry/except構文とは?

Flaskに限らず、Pythonではエラーが起きそうな処理を「try」ブロックに書き、問題が発生した場合の処理を「except」ブロックに書くことができます。

基本構文は以下の通りです。

try:
    # エラーが起きそうな処理
except エラーの種類:
    # エラーが起きた時の処理

この構文により、プログラムを止めずにエラーへ柔軟に対応することが可能です。

Flaskでも内部的にはこの構文が利用されており、後述するabort()errorhandler()と連携して活用できます。

Pythonの例外処理について詳しく復習したい方は↓↓の記事を参考にしてください。

あわせて読みたい
【レッスン2-9】エラーに強いコードを書く!例外処理(try-except)の使い方|Python入門
【レッスン2-9】エラーに強いコードを書く!例外処理(try-except)の使い方|Python入門

abort()関数を使ってHTTPエラーを返す方法

Flaskでは、HTTPリクエストに対してエラーを返したいときに abort() 関数 を使います。

例えば、ある条件を満たさない場合にリクエストを打ち切って「404 Not Found」や「403 Forbidden」などを返すといった用途です。

abort関数の書き方と使用例

基本構文は以下の通りです。

from flask import abort

abort(ステータスコード)

使用例は以下の通りです。

from flask import Flask, abort
app = Flask(__name__)

@app.route('/admin')      # もしこのURLにアクセスされたら(ルーティング)
def admin():
    user_is_admin = False # 仮の条件
    if not user_is_admin:
        abort(403)        # アクセス拒否
    return '管理者ページへようこそ'

よく使うHTTPステータスコード一覧

ステータスコード意味
400Bad Request(不正なリクエスト)
403Forbidden(禁止されたアクセス)
404Not Found(ページが見つからない)
500Internal Server Error(サーバー内部エラー)
あわせて読みたい
Flask入門|ルーティングを理解しよう【チャプター1-04】
Flask入門|ルーティングを理解しよう【チャプター1-04】

app.errorhandler()でカスタムエラーメッセージを作ろう

特定のエラーが発生した際に、ユーザーに分かりやすい応答を返すための方法として、@app.errorhandler() デコレータ を用いたエラーハンドラの登録が可能です。

デコレーターについて復習したい方は↓↓の記事を参考にしてください。

あわせて読みたい
【レッスンF-2】デコレーターとは?関数をより柔軟に扱うテクニック|Python学習
【レッスンF-2】デコレーターとは?関数をより柔軟に扱うテクニック|Python学習

errorhandlerの定義方法と実装例

基本構文は以下の通りです。

@app.errorhandler(ステータスコード)
def ハンドラ関数名(error):
    return 'メッセージやテンプレートなど'

404エラー時にカスタムメッセージを返す例は以下の通りです。

from flask import Flask
app = Flask(__name__)

@app.errorhandler(404)
def page_not_found(error):
    return 'お探しのページは見つかりませんでした。', 404

このようにすることで、標準的なエラーページではなく、オリジナルのエラー応答を返すことができます。

テンプレートを使えば、視覚的にわかりやすいページを作ることもできます(詳細は次章で扱います)。

まとめ|Flaskの基本エラーハンドリング手法を振り返ろう

この記事では、Flaskにおける基本的なエラーハンドリング手法を学びました。

  • エラーハンドリングはアプリの信頼性を高める重要な技術
  • try / except構文でエラー処理の基本を押さえる
  • abort()でHTTPエラーを明示的に返す
  • app.errorhandler()で特定のエラーに応じた処理を定義する

エラー処理を制御できるようになると、アプリの完成度が一段とアップします。

次は、よりユーザーフレンドリーな「カスタムエラーページ」の作成にチャレンジしてみましょう!

もっと分かりやすい学習サイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいFlask学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

Flaskの記事一覧

次のページ>>

FAQ|Flaskの基本的なエラーハンドリングについて

Q
Q1. Flaskでabort関数を使うときは、どんなタイミングが適切ですか?

ユーザーが許可されていないページにアクセスした場合など、明示的に処理を中断してHTTPエラーを返したいときに使います。バリデーションや認証処理と組み合わせるのが一般的です。

Q
Q2. errorhandlerで定義した関数は、全てのエラーに自動で対応してくれますか?

いいえ。@app.errorhandler(404) のようにステータスコードを指定する必要があります。指定したコードのエラーが発生したときのみ、その関数が呼び出されます。

Q
Q3. Flaskの開発中に予期しないエラーが出た場合、どう対処すればよいですか?

まずはtry/except構文で処理を囲んでエラー内容を確認しましょう。Flaskのデバッグモードをオンにすることで、詳細なエラーメッセージも表示されますが、本番環境では無効化が推奨されます。

記事URLをコピーしました