This article will deal with different types of HTTP errors and then learn how to use Flask error handling to tackle these errors. So let’s get started!
Why do we Need Error Handling?
An error in a web application can happen due to several reasons. It can be due to an incorrect code in the App or some bad requests by the user or server downtime.
Hence it is critical to handle these errors. The browsers, though by-default handles HTTP errors for you, the output is not quite aesthetic.
For example, while building a Flask application, you might have come across 500 internal server error.

A simple line indicating the reason for the error would have sufficed, instead of displaying irrelevant data.
This is where Flask Error handlers come into the picture.
With Flask error Handlers, we can:
- Customize the error page look.
- Show only relevant data to the user.
Common HTTP errors
Some of the most common errors raised are:
HTTP Error Codes | Meaning |
---|---|
301 | Moved Permanently |
302 | Moved Temporarily |
400 | Bad Request |
403 | Forbidden |
404 | Not Found |
429 | Too Many Requests |
500 | Internal Server Error |
502 | Bad Gateway |
503 | Service Unavailable |
504 | Gateway Timeout |
Hands-On with Flask Error Handling
Error codes – 404 and 500 are the most common errors that we deal with every day.
So in this section we will build a simple Error handler for 404 and 500. The syntax for other errors will be exactly the same.
In flask, we use the built-in error_handler decorator.
The syntax is:
@app.errorhandler(status_code)
def function_name(error):
return render_template('xyz.html'),status_code
Hence consider the following Flask application example:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/blogs')
def blog():
return render_template('blog.html')
#Handling error 404 and displaying relevant web page
@app.errorhandler(404)
def not_found_error(error):
return render_template('404.html'),404
#Handling error 500 and displaying relevant web page
@app.errorhandler(500)
def internal_error(error):
return render_template('500.html'),500
#app.run(host='localhost', port=5000)
app.run(host='localhost', port=5000)
The Blog.html:
<h2>Welcome to the Blog</h2>
The 404.html file:
<h2>The webpage you are trying is not found</h2>
<img src = "{{url_for('static','images/opps.jpg') }}"
Here we are using a image to show on the 404 web page as well
Similarly the 500.html file:
<h2>Something Went Wrong</h2>
Implementation
Now run the server and go to any arbitary non-existant URL endpoint

Now to get the 500 error, deliberately interchange a few letters of render_template() to let’s say remder_template()
Now restart the server and go to “/blogs” URL. You will now get the 500 error page

Perfect!
Conclusion
That’s it, guys !! You can now customize the error pages as well based on your webpage theme. Do check out our other Flask tutorials to know more about Flask.
See you guys in the next article !! Happy Coding 🙂