【Flask】エラーハンドリングの基本を学ぼう|Chapter6-2

一つ前のページでは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()を使ったエラー処理のカスタマイズ
- Flask開発を Stream Deck でボタン化しよう!
-
Flaskは非常に軽量かつシンプルなフレームワークですが、それゆえに定型作業が多く、開発は単調な作業の連続になりがちです。
それこそがFlaskのメリットであり、習得難易度が低い理由でもありますが、単調な作業は退屈で、ミスも起こりやすいでしょう。
そこで役に立つのが Stream Deck 。
このような定型手順が多い作業を “ボタン化” することで視覚化。
圧倒的に 効率的 かつ ストレスフリー な開発環境が簡単に手に入ります↓↓
あわせて読みたいFlask開発をStreamDeckでボタン化しようあわせて読みたいプログラマー向けStream Deckの選び方|初心者でも失敗しないモデル比較ガイド
Flaskのエラーハンドリングとは?初心者向けに概要を解説
Flaskアプリケーションでは、ユーザーからの入力が不適切だったり、ファイルが見つからなかったりする場面でエラーが発生します。
こうしたエラーをそのまま放置するとアプリがクラッシュしたり、ユーザーに意味のわからないエラーメッセージが表示されてしまうかもしれません。
エラーの種類に応じた適切な対応を実装し、アプリの安定性とユーザー体験を向上させましょう。

【復習】Pythonのtry/except構文とは?
Flaskに限らず、Pythonではエラーが起きそうな処理を「try」ブロックに書き、問題が発生した場合の処理を「except」ブロックに書くことができます。
基本構文は以下の通りです。
try:
# エラーが起きそうな処理
except エラーの種類:
# エラーが起きた時の処理この構文により、プログラムを止めずにエラーへ柔軟に対応することが可能です。
Flaskでも内部的にはこの構文が利用されており、後述するabort()やerrorhandler()と連携して活用できます。
Pythonの例外処理について詳しく復習したい方は↓↓の記事を参考にしてください。

abort()関数を使ってHTTPエラーを返す方法
Flaskでは、HTTPリクエストに対してエラーを返したいときに abort()関数 を使います。
例えば、ある条件を満たさない場合にリクエストを打ち切って「404 Not Found」や「403 Forbidden」などを返すといった用途です。
abort関数の書き方と使用例
基本構文は以下の通りです。
from flask import abort # 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: # もし条件を満たさないなら(条件がFalseなら)
abort(403) # アクセス拒否
return '管理者ページへようこそ'よく使うHTTPステータスコード一覧
Flaskで良く使用するステータスコードは以下の通りです。
| ステータスコード | 意味 |
|---|---|
| 400 | Bad Request(不正なリクエスト) |
| 403 | Forbidden(禁止されたアクセス) |
| 404 | Not Found(ページが見つからない) |
| 500 | Internal Server Error(サーバー内部エラー) |
より詳しく復習したい場合は以下の記事を参考にしてください。

app.errorhandler()でカスタムエラーメッセージを作ろう
特定のエラーが発生した際に、ユーザーに分かりやすい応答を返すための方法として、@app.errorhandler() デコレータ を用いたエラーハンドラの登録が可能です。
デコレーターについて復習したい方は↓↓の記事を参考にしてください。

errorhandler()の定義方法と実装例
基本構文は以下の通りです。
@app.errorhandler(ステータスコード) # デコレーター
def ハンドラ関数名(error):
return 'メッセージやテンプレートなど'404エラー時にカスタムメッセージを返す例は以下の通りです。
from flask import Flask
app = Flask(__name__)
@app.errorhandler(404) # デコレーター:もし404エラーが発生したなら
def page_not_found(error):
return 'お探しのページは見つかりませんでした。', 404このようにすることで、標準的なエラーページではなく、オリジナルのエラー応答を返すことができます。
テンプレートを使えば、視覚的にわかりやすいページを作ることもできます(詳細は次章で扱います)。
まとめ|Flaskの基本エラーハンドリング手法を振り返ろう
この記事では、Flaskにおける基本的なエラーハンドリング手法を学びました。
- エラーハンドリングはアプリの信頼性を高める重要な技術
try / except構文でエラー処理の基本を押さえるabort()でHTTPエラーを明示的に返すapp.errorhandler()で特定のエラーに応じた処理を定義する
エラー処理を制御できるようになると、アプリの完成度が一段とアップします。
次は、よりユーザーフレンドリーな「カスタムエラーページ」の作成にチャレンジしてみましょう!
- サイト改善アンケート|1分だけ、ご意見をお聞かせください
-
本サイトでは、みなさまの学習をよりサポートできるサービスを目指しております。
そのため、ご利用者のみなさまの「プログラミングを学習する理由」などをアンケート形式でお伺いしています。ご協力いただけますと幸いです。
アンケート
FAQ|Flaskの基本的なエラーハンドリングについて
- Q1. Flaskでabort関数を使うときは、どんなタイミングが適切ですか?
-
ユーザーが許可されていないページにアクセスした場合など、明示的に処理を中断してHTTPエラーを返したいときに使います。バリデーションや認証処理と組み合わせるのが一般的です。
- Q2. errorhandlerで定義した関数は、全てのエラーに自動で対応してくれますか?
-
いいえ。
@app.errorhandler(404)のようにステータスコードを指定する必要があります。指定したコードのエラーが発生したときのみ、その関数が呼び出されます。
- Q3. Flaskの開発中に予期しないエラーが出た場合、どう対処すればよいですか?
-
まずは
try/except構文で処理を囲んでエラー内容を確認しましょう。Flaskのデバッグモードをオンにすることで、詳細なエラーメッセージも表示されますが、本番環境では無効化が推奨されます。






