Flask অ্যাপ্লিকেশনে Exception Handling এবং Debugging দুটি গুরুত্বপূর্ণ বিষয়, যা অ্যাপ্লিকেশনের ত্রুটি সনাক্ত করা এবং সেগুলি হ্যান্ডেল করতে সাহায্য করে। Flask এ আপনি ত্রুটি পরিচালনা এবং ডিবাগিং করতে বিভিন্ন পদ্ধতি ব্যবহার করতে পারেন। এটি ডেভেলপমেন্টে কার্যকরী এবং প্রোডাকশনে নিরাপত্তা নিশ্চিত করতে সহায়ক।
১. Exception Handling (ত্রুটি হ্যান্ডলিং)
Flask-এ Exception Handling ব্যবহারের মাধ্যমে আপনি বিভিন্ন ধরনের ত্রুটি ক্যাচ এবং কাস্টম মেসেজ প্রদান করতে পারেন। Flask-এ এর জন্য errorhandler() ব্যবহার করা হয়।
Flask Exception Handling - কাস্টম ত্রুটি মেসেজ
Flask অ্যাপ্লিকেশনে কাস্টম ত্রুটি মেসেজ তৈরি করতে, আপনি errorhandler() ডেকোরেটর ব্যবহার করতে পারেন। এতে আপনি নির্দিষ্ট HTTP স্ট্যাটাস কোডের জন্য কাস্টম রেসপন্স প্রদান করতে পারেন।
উদাহরণ:
from flask import Flask, jsonify
app = Flask(__name__)
# 404 ত্রুটি হ্যান্ডলিং
@app.errorhandler(404)
def not_found_error(error):
return jsonify({"error": "Page not found"}), 404
# 500 ত্রুটি হ্যান্ডলিং
@app.errorhandler(500)
def internal_error(error):
return jsonify({"error": "Internal server error"}), 500
@app.route('/')
def home():
return "Welcome to Flask!"
if __name__ == "__main__":
app.run(debug=True)
এখানে:
@app.errorhandler(404): 404 ত্রুটি (পেজ না পাওয়া) হলে এটি কাস্টম JSON রেসপন্স প্রদান করবে।@app.errorhandler(500): 500 ত্রুটি (সার্ভার সমস্যা) হলে এটি কাস্টম JSON রেসপন্স প্রদান করবে।
আউটপুট:
- 404 ত্রুটি:
{ "error": "Page not found" } - 500 ত্রুটি:
{ "error": "Internal server error" }
২. Exception Handling with Try-Except Block
Flask অ্যাপ্লিকেশনে আপনি সাধারণ Python ত্রুটি হ্যান্ডলিং (try-except) ব্যবহার করতে পারেন, যাতে বিশেষ ত্রুটি সঠিকভাবে হ্যান্ডেল করা যায়।
উদাহরণ:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/divide/<int:a>/<int:b>')
def divide(a, b):
try:
result = a / b
except ZeroDivisionError:
return jsonify({"error": "Cannot divide by zero"}), 400
return jsonify({"result": result})
if __name__ == "__main__":
app.run(debug=True)
এখানে:
ZeroDivisionErrorত্রুটি হ্যান্ডল করা হয়েছে, যেখানে ব্যবহারকারী 0 দিয়ে ভাগ করার চেষ্টা করলে কাস্টম ত্রুটি মেসেজ প্রদর্শিত হবে।
আউটপুট:
/divide/10/0এ গেলে:{ "error": "Cannot divide by zero" }/divide/10/2এ গেলে:{ "result": 5.0 }
৩. Debugging in Flask
Flask ডিবাগ মোডে চললে আপনাকে ত্রুটির বিস্তারিত রিপোর্ট দেয়, যা অ্যাপ্লিকেশন ডেভেলপমেন্টে সাহায্য করে। ডিবাগ মোডের মাধ্যমে আপনি অ্যাপ্লিকেশনে কোনো সমস্যা বা ত্রুটি সনাক্ত করতে পারবেন।
Debug Mode সক্রিয় করা
Flask অ্যাপ্লিকেশন চালানোর সময় debug=True ব্যবহার করে ডিবাগ মোড চালু করা হয়।
উদাহরণ:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Welcome to Flask Debugging!"
if __name__ == "__main__":
app.run(debug=True) # Debugging সক্রিয় করা
এখন, Flask চালানোর সময় যদি কোনো ত্রুটি হয়, তাহলে Flask ত্রুটির পটভূমি, স্ট্যাক ট্রেস, এবং সঠিক ত্রুটি বার্তা প্রদর্শন করবে।
Debug Mode এর সুবিধা:
- এডিট অ্যান্ড রিলোড: কোড পরিবর্তন করার পর Flask স্বয়ংক্রিয়ভাবে সার্ভার রিলোড হয়ে যায়।
- স্ট্যাক ট্রেস: ত্রুটি হলে স্ট্যাক ট্রেস প্রদান করে, যাতে আপনি দ্রুত ত্রুটি সনাক্ত করতে পারেন।
- ডিবাগ কনসোল: ব্রাউজারে ডিবাগ কনসোল পাওয়া যায়, যা ডেভেলপমেন্টে সাহায্য করে।
৪. Logging for Debugging
Flask-এ আপনি লগিং ব্যবহার করে অ্যাপ্লিকেশনটির কার্যক্রম ট্র্যাক করতে পারেন। এটি ডিবাগিং এবং ত্রুটি হ্যান্ডলিংয়ের জন্য খুবই কার্যকরী।
উদাহরণ:
import logging
from flask import Flask
app = Flask(__name__)
# লগিং কনফিগারেশন
logging.basicConfig(level=logging.DEBUG)
@app.route('/')
def home():
app.logger.debug('Home route was accessed') # Debug লগ
return "Welcome to Flask!"
@app.route('/error')
def error():
app.logger.error('An error occurred in the /error route') # Error লগ
return "An error occurred", 500
if __name__ == "__main__":
app.run(debug=True)
এখানে:
logging.basicConfig(level=logging.DEBUG): লগিং কনফিগারেশন সেট করা হয়েছে যাতে DEBUG স্তরের লগ সংগ্রহ করা হয়।app.logger.debug(): ডিবাগ স্তরের লগ লিখে।app.logger.error(): ত্রুটি স্তরের লগ লিখে।
এখন আপনি Flask এর লগফাইল বা টার্মিনালে লগ দেখতে পাবেন, যা আপনাকে অ্যাপ্লিকেশন এর আচরণ বা ত্রুটি সনাক্ত করতে সাহায্য করবে।
৫. Flask Shell for Debugging
Flask শেল আপনাকে আপনার অ্যাপ্লিকেশন চালানোর জন্য একটি интерактив শেল প্রদান করে, যা ডিবাগিং এবং পরীক্ষা করার জন্য খুবই উপকারী।
শেল চালানোর জন্য:
flask shell
এটি Flask অ্যাপ্লিকেশন চালু করবে এবং আপনি শেল থেকে Flask অ্যাপ্লিকেশন অবজেক্টের সাথে ইন্টারঅ্যাক্ট করতে পারবেন।
৬. Custom Error Pages
Flask-এ আপনি কাস্টম ত্রুটি পৃষ্ঠা তৈরি করতে পারেন, যেখানে ব্যবহারকারীরা ত্রুটি সম্পর্কে আরও বিস্তারিত তথ্য পেতে পারে।
উদাহরণ:
@app.errorhandler(404)
def page_not_found(error):
return render_template('404.html'), 404
@app.errorhandler(500)
def internal_server_error(error):
return render_template('500.html'), 500
এখানে:
- 404.html: পেজ না পাওয়ার জন্য কাস্টম পৃষ্ঠা।
- 500.html: সার্ভার ত্রুটির জন্য কাস্টম পৃষ্ঠা।
Flask-এ Exception Handling এবং Debugging অ্যাপ্লিকেশনের উন্নয়ন এবং রক্ষণাবেক্ষণের জন্য অত্যন্ত গুরুত্বপূর্ণ। Error Handling এর মাধ্যমে আপনি ত্রুটিগুলির সঠিক রেসপন্স দিতে পারবেন এবং Debug Mode এবং Logging ব্যবহারের মাধ্যমে ত্রুটির বিস্তারিত তথ্য ও লগ দেখতে পারবেন। Flask-এর এই ফিচারগুলো ডেভেলপমেন্ট প্রক্রিয়াকে সহজ এবং ত্রুটি মুক্ত করতে সাহায্য করে।
Read more