[파이썬] Flask에서의 에러 핸들링

Flask는 Python 웹 프레임워크로서, 웹 애플리케이션을 쉽게 개발할 수 있는 강력한 도구입니다. 그러나 어떤 경우에는 애플리케이션에서 예외와 에러가 발생할 수 있습니다. 이러한 예외와 에러를 적절하게 처리하지 않으면 사용자에게 좋지 않은 경험을 제공할 수 있습니다. 따라서 Flask에서의 에러 핸들링은 매우 중요합니다.

Flask에서는 다양한 방법으로 예외와 에러를 처리할 수 있습니다. 이러한 방법 중 몇 가지를 살펴보겠습니다.

1. @app.errorhandler

Flask에서는 @app.errorhandler 데코레이터를 사용하여 특정 예외를 처리할 수 있습니다. 이를 사용하면 해당 예외가 발생했을 때 실행할 함수를 정의할 수 있습니다.

from flask import Flask, jsonify

app = Flask(__name__)

@app.errorhandler(404)
def handle_404_error(e):
    response = jsonify({"message": "Page not found"})
    response.status_code = 404
    return response

@app.route('/')
def home():
    return "Welcome to Flask Error Handling"

if __name__ == '__main__':
    app.run()

위의 예제에서는 404 에러가 발생했을 때 handle_404_error 함수가 호출됩니다. 이 함수는 사용자에게 “Page not found”라는 메시지를 반환하고 상태 코드 404를 포함한 JSON 응답을 반환합니다.

2. try-except 문

파이썬에서는 try-except 문을 사용하여 예외를 처리할 수 있습니다. Flask 애플리케이션에서도 이를 사용하여 예외를 처리할 수 있습니다.

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/divide')
def divide_numbers():
    try:
        result = 10 / 0
        return jsonify({"result": result})
    except ZeroDivisionError as e:
        response = jsonify({"message": "Division by zero"})
        response.status_code = 500
        return response

if __name__ == '__main__':
    app.run()

위의 예제에서는 divide_numbers 함수에서 0으로 나누려고 시도하고 있습니다. 이러한 경우 ZeroDivisionError가 발생하게 됩니다. 이 예외를 try-except 문으로 처리하고, 사용자에게 “Division by zero” 메시지를 포함한 상태 코드 500을 반환합니다.

3. Flask의 기본 예외 처리기

Flask에는 기본 예외 처리기가 내장되어 있습니다. 이러한 처리기를 사용하면 특정 예외와 관련된 기본 메시지를 사용자에게 반환할 수 있습니다.

from flask import Flask

app = Flask(__name__)

@app.route('/notfound')
def handle_notfound():
    return "Page not found", 404

if __name__ == '__main__':
    app.run()

위의 예제에서는 /notfound 경로로 접속하면 “Page not found” 메시지를 반환하고 상태 코드 404를 반환합니다. Flask의 내장된 예외 처리기는 상태 코드별로 기본 메시지를 자동으로 제공하여 개발자가 직접 처리기를 작성하지 않아도 됩니다.

Flask에서의 에러 핸들링은 애플리케이션의 안정성과 사용자 경험을 향상시키는 중요한 요소입니다. 적절한 에러 핸들링을 통해 사용자에게 친숙한 메시지를 제공하고 문제를 발견하고 대응할 수 있는 기회를 주는 것이 좋습니다.