파이썬(Python)/Flask

[Python]flask의 errorhandler와 Exception 예제로 이해하기(파이썬)

끄적끄적아무거나 2023. 8. 23. 08:26
반응형

 

목차

     

     

     

     

     

    에러 핸들러와 Exception이란?

     

    에러 핸들러는 프로그램이 예상치 못한 에러나 예외 상황을 처리하는 방법을 정의하는 코드 블록입니다. 이는 프로그램이 실행 중에 발생한 에러를 적절하게 처리하고, 사용자에게 적절한 안내를 제공하거나 시스템을 안정적으로 유지하기 위해 사용됩니다. 에러 핸들러는 프로그램의 다양한 상황에 따라 다양한 종류의 에러를 처리하기 위해 사용됩니다. 보통 HTTP 상태 코드에서 400번대와 500번대는 클라이언트(Client)의 에러를 의미합니다. Errorhandler는 이러한 에러 발생시 동작하는 함수 입니다. 아래 예제를 통해 쉽게 설명하겠습니다.

     

    예외(Exception)는 프로그램 실행 중에 발생하는 문제시 동작하게 도와주는 함수 입니다. 이는 프로그램이 예상치 못한 상황에 직면했을 때 발생하며, 예외는 프로그램의 정상적인 흐름을 방해할 수 있습니다. 예를 들어, 파일을 열려고 할 때 해당 파일이 존재하지 않으면 "파일을 찾을 수 없음"이라는 예외가 발생할 수 있습니다. 이러한 예외는 프로그램에서 어떻게 처리할지를 정의하는 코드 블록으로 처리될 수 있습니다. 만일 코드를 작성하고 있었다면 어디서 에러가 발생하는지 메세지를 같이 넣어서 표기할 수 있습니다. 

     

     

     

     

     

    Flask 에러 핸들러와 Exception 예제

    아래 예제는 flask로 백엔드 서버를 동작 시키고 없는 페이지에 접속을 하여서 404 페이지 없음 에러를 발생시키고 errorhandler에서 정상적으로 처리하는지 알아보겟습니다.

     

    그리고 /error 페이지에 접속시 강제로 Exception 에러를 발생 시키고 에러 메세지를 띄워 보겠습니다.

     

     

    예제 코드 app.py>>

    from flask import Flask, render_template
    
    app = Flask(__name__)
    
    @app.route('/')
    def home():
        return "Hello, Flask Error Handling Example!"
    
    @app.route('/error')
    def trigger_error():
        # 아무 의미 없는 500 Internal Server Error를 강제로 발생시킵니다.
        raise Exception("This is a forced exception!")
    
    # 404 에러를 처리하는 커스텀 error handler입니다.
    @app.errorhandler(404)
    def not_found_error(error):
        return render_template('404.html'), 404
    
    if __name__ == '__main__':
        app.run(debug=True)

    9~12번 라인: Exception을 사용해서 강제 에러를 발생시키고 메세지를 웹브라우져에 출력해줍니다.

    15~17번 라인: 404 에러 발생시 not_found_error 함수가 실행됨

     

     

     

     

    예제 코드 404.html>>

    <!DOCTYPE html>
    <html>
    <head>
        <title>404 Not Found</title>
    </head>
    <body>
        <h1>404 - Page Not Found</h1>
        <p>The requested page does not exist.</p>
    </body>
    </html>

    앞서 app.py에서 실행시킨 not_found_error함수로 인해 404.html이 실행됨. 

    404페이지를 꾸미고 싶을 때 사용하면 됨.

     

     

     

    결과>>

     

    아래는 존재하지 않는 주소에 접속시 발생

     

     

     

     

     

    Flask 에러 핸들러와 Exception 예제 코드 다운로드

     

    app.py
    0.00MB
    404.html
    0.00MB

     

     

    반응형