[python] 웹 서버에 예외 처리 기능 추가하기

소개

웹 서버를 구축할 때 예외 처리는 매우 중요합니다. 예외 처리를 통해 사용자에게 적절한 오류 메시지를 제공하고, 웹 서비스의 안정성을 강화할 수 있습니다. 이번 블로그 포스트에서는 Python과 Flask 프레임워크를 사용하여 웹 서버에 예외 처리 기능을 추가하는 방법에 대해 알아보겠습니다.

Flask와 예외 처리

Flask는 가벼운 웹 프레임워크로, 예외 처리를 위한 기능을 제공합니다. Flask는 기본적으로 @app.errorhandler 데코레이터를 통해 예외 처리를 할 수 있도록 해줍니다. 이 데코레이터를 사용하면 특정 예외가 발생했을 때 처리할 함수를 지정할 수 있습니다.

from flask import Flask, jsonify, make_response

app = Flask(__name__)

@app.errorhandler(404)
def not_found(error):
    return make_response(jsonify({'error': 'Not Found'}), 404)

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

위 코드에서 @app.errorhandler(404)는 404 오류가 발생했을 때 not_found 함수를 실행하도록 설정하는 부분입니다. not_found 함수는 JSON 형태의 응답을 생성하여 클라이언트에게 전달합니다.

예외 처리를 위한 에러 핸들러 작성하기

일반적으로 예외 처리를 위해서는 여러 종류의 예외에 대해 각각의 처리 함수를 작성해야 합니다. 아래는 예외 처리를 위한 기본적인 에러 핸들러 함수를 작성한 예시입니다.

from flask import Flask, jsonify, make_response

app = Flask(__name__)

@app.errorhandler(404)
def not_found(error):
    return make_response(jsonify({'error': 'Not Found'}), 404)

@app.errorhandler(500)
def internal_server_error(error):
    return make_response(jsonify({'error': 'Internal Server Error'}), 500)

@app.errorhandler(403)
def forbidden(error):
    return make_response(jsonify({'error': 'Forbidden'}), 403)

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

위 코드에서는 404, 500, 403 등의 예외에 대해 각각 다른 처리 함수를 작성하였습니다. 예외에 따라 적절한 상태 코드와 메시지를 클라이언트에게 전달하도록 구성되어 있습니다.

예외 처리를 위한 커스텀 에러 핸들러 작성하기

Flask에서는 커스텀한 예외를 만들어 처리할 수도 있습니다. 이를 통해 더 세밀한 예외 처리를 수행할 수 있습니다.

from flask import Flask, jsonify, make_response

app = Flask(__name__)

class CustomException(Exception):
    pass

@app.errorhandler(CustomException)
def handle_custom_exception(error):
    response = {'error': str(error)}
    return make_response(jsonify(response), 500)

@app.route('/custom')
def raise_custom_exception():
    raise CustomException('Custom Exception Raised')

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

위 코드에서는 CustomException이라는 커스텀 예외를 만들고, handle_custom_exception 함수에서 해당 예외를 처리하도록 설정하였습니다. /custom URL에서 raise_custom_exception 함수를 호출하면 CustomException이 발생하고, 해당 예외를 handle_custom_exception 함수에서 처리합니다.

결론

웹 서버 개발 시 예외 처리는 매우 중요한 요소입니다. Flask를 사용하면 간단하게 예외 처리 기능을 구현할 수 있으며, 커스텀한 예외를 사용하여 더 세밀한 예외 처리 또한 가능합니다. 예외 처리를 통해 웹 서비스의 안정성을 높이고, 사용자에게 좀 더 친절한 오류 메시지를 제공할 수 있습니다.