Flask এর Error Handling এবং Custom Error Pages

ফ্লাস্ক (Flask) - Web Development

306

Flask অ্যাপ্লিকেশনে Error Handling বা ত্রুটি পরিচালনা গুরুত্বপূর্ণ একটি বিষয়, যা ব্যবহারকারীদের জন্য সুন্দর ও সুনির্দিষ্ট ত্রুটি বার্তা প্রদান করতে সহায়ক। Flask আপনাকে ত্রুটির কারণে প্রদর্শিত হওয়া default error pages কাস্টমাইজ করার সুযোগ দেয়, যার মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনটিকে আরও ব্যবহারকারী বান্ধব এবং নিরাপদ করতে পারেন।


১. Flask Error Handling

Flask ত্রুটি পরিচালনা করার জন্য কয়েকটি পদ্ধতি প্রদান করে:

  1. Error Handlers: Flask আপনাকে বিভিন্ন HTTP ত্রুটির জন্য কাস্টম Error Handlers তৈরি করার সুযোগ দেয়।
  2. abort(): একটি নির্দিষ্ট HTTP ত্রুটি সৃষ্টির জন্য ব্যবহার করা হয়।

১.১ Error Handlers ব্যবহার করা

Flask-এ কাস্টম Error Handler তৈরি করা যেতে পারে যা নির্দিষ্ট HTTP স্ট্যাটাস কোড (যেমন 404 বা 500) এর জন্য কাজ করবে।

উদাহরণ:

from flask import Flask, render_template

app = Flask(__name__)

# 404 ত্রুটির জন্য কাস্টম error handler
@app.errorhandler(404)
def not_found(error):
    return render_template('404.html'), 404

# 500 ত্রুটির জন্য কাস্টম error handler
@app.errorhandler(500)
def internal_error(error):
    return render_template('500.html'), 500

@app.route("/")
def home():
    return "স্বাগতম Flask অ্যাপে!"

if __name__ == "__main__":
    app.run(debug=True)

এখানে:

  • @app.errorhandler(404): এটি 404 ত্রুটি (পেজ না পাওয়া) জন্য একটি কাস্টম হ্যান্ডলার তৈরি করেছে।
  • @app.errorhandler(500): এটি 500 ত্রুটি (ইন্টারনাল সার্ভার এরর) জন্য একটি কাস্টম হ্যান্ডলার তৈরি করেছে।

Flask 404 এবং 500 ত্রুটির জন্য কাস্টম HTML পেজ ব্যবহার করে সেগুলিকে আরও ব্যবহারকারী বান্ধব করতে সহায়ক হয়।


২. Flask এ abort() ফাংশন ব্যবহার করা

Flask-এ abort() ফাংশনটি ব্যবহার করে আপনি HTTP ত্রুটি তৈরি করতে পারেন। এটি বিশেষভাবে তখন ব্যবহার করা হয় যখন আপনি কোডের মধ্যে ত্রুটি সৃষ্টির জন্য একটি নির্দিষ্ট HTTP স্ট্যাটাস কোড ফেরত দিতে চান।

উদাহরণ:

from flask import Flask, abort

app = Flask(__name__)

@app.route("/page/<int:page_id>")
def show_page(page_id):
    if page_id != 1:
        abort(404)  # পেজ না পাওয়া (404 ত্রুটি)
    return f"পেজ {page_id}"

if __name__ == "__main__":
    app.run(debug=True)

এখানে:

  • abort(404): এই ফাংশনটি 404 ত্রুটি তৈরি করবে যখন page_id 1 না হবে।

৩. Custom Error Pages তৈরি করা

Flask-এ আপনি কাস্টম error pages তৈরি করে ত্রুটির সময়ে ব্যবহারকারীদের আরও সুন্দরভাবে হ্যান্ডল করতে পারেন। সাধারণত, HTML টেমপ্লেট ব্যবহার করে কাস্টম error pages তৈরি করা হয়।

৩.১ 404 Error Page Example

প্রথমে, একটি কাস্টম 404 error page তৈরি করুন।

templates/404.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>404 - পেজ পাওয়া যায়নি</title>
</head>
<body>
    <h1>404 - পেজ পাওয়া যায়নি!</h1>
    <p>আমরা যে পৃষ্ঠাটি খুঁজে পাচ্ছি না। অনুগ্রহ করে আবার চেষ্টা করুন।</p>
</body>
</html>

এখন, Flask অ্যাপে 404 Error Handler ব্যবহার করা হবে:

@app.errorhandler(404)
def not_found(error):
    return render_template('404.html'), 404

এখানে, যখন ব্যবহারকারী একটি ভুল URL প্রবেশ করবে, তখন Flask কাস্টম 404 পেজ রেন্ডার করবে।

৩.২ 500 Error Page Example

আরেকটি কাস্টম 500 error page তৈরি করা।

templates/500.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>500 - সিস্টেম ত্রুটি</title>
</head>
<body>
    <h1>500 - সিস্টেম ত্রুটি!</h1>
    <p>আমাদের সার্ভারে কিছু সমস্যা ঘটেছে। দয়া করে পরে আবার চেষ্টা করুন।</p>
</body>
</html>

এখন, Flask অ্যাপে 500 Error Handler ব্যবহার করা হবে:

@app.errorhandler(500)
def internal_error(error):
    return render_template('500.html'), 500

এখানে, যখন আপনার অ্যাপ্লিকেশনে কোনো ইন্টারনাল সার্ভার সমস্যা হবে, তখন Flask কাস্টম 500 পেজ রেন্ডার করবে।


৪. Flask Default Error Pages কাস্টমাইজ করা

Flask কিছু ডিফল্ট ত্রুটি পেজ প্রদান করে, তবে আপনি আপনার অ্যাপে custom error pages ব্যবহার করে এগুলি কাস্টমাইজ করতে পারেন। যেমন:

  • 404: পেজ না পাওয়া।
  • 500: সার্ভার ত্রুটি।

কাস্টম error pages Flask অ্যাপ্লিকেশনের ব্যবহারকারীদের জন্য ভালো অভিজ্ঞতা প্রদান করে, বিশেষ করে যখন তারা ভুল পেজ বা সার্ভার সমস্যা সম্মুখীন হন।


Flask অ্যাপ্লিকেশনে Error Handling এবং Custom Error Pages গুরুত্বপূর্ণ ভূমিকা পালন করে। আপনি @app.errorhandler() ব্যবহার করে নির্দিষ্ট HTTP ত্রুটির জন্য কাস্টম হ্যান্ডলার তৈরি করতে পারেন এবং HTML টেমপ্লেট ব্যবহার করে কাস্টম error pages তৈরি করতে পারেন। এই ফিচারগুলি Flask অ্যাপ্লিকেশনটিকে আরও ব্যবহারকারী বান্ধব এবং পেশাদার করে তোলে।

Content added By

Flask অ্যাপ্লিকেশন তৈরির সময় Error Handling একটি গুরুত্বপূর্ণ বিষয়। Flask-এ Error Handling বা ত্রুটি পরিচালনা করার জন্য একটি সহজ এবং শক্তিশালী ব্যবস্থা রয়েছে, যার মাধ্যমে আপনি অ্যাপ্লিকেশনে ঘটে যাওয়া ত্রুটিগুলো সহজে ধরতে এবং সেগুলি যথাযথভাবে হ্যান্ডেল করতে পারেন।

Flask স্বয়ংক্রিয়ভাবে কিছু সাধারণ HTTP ত্রুটি (যেমন 404, 500) পরিচালনা করে, তবে আপনি চাইলে কাস্টম Error Pages তৈরি করে সেগুলোর জন্য নিজস্ব রেসপন্স দিতে পারেন।


১. Flask এর Built-in Error Handling

Flask কিছু সাধারণ HTTP ত্রুটি যেমন 404 (Not Found) এবং 500 (Internal Server Error) স্বয়ংক্রিয়ভাবে হ্যান্ডেল করে এবং আপনি চাইলে কাস্টম ত্রুটি পেজ তৈরি করতে পারেন।

উদাহরণ:

  1. 404 Error: যখন ব্যবহারকারী একটি ভুল URL প্রবেশ করে, Flask ডিফল্টভাবে একটি 404 ত্রুটি পৃষ্ঠা প্রদর্শন করবে।
  2. 500 Error: যখন সার্ভারে কোনো অপ্রত্যাশিত ত্রুটি ঘটে, তখন এটি একটি 500 ত্রুটি প্রদর্শন করবে।

Flask-এ ত্রুটির পেজ কাস্টমাইজ করা সম্ভব, এবং @app.errorhandler() ডেকোরেটর ব্যবহার করে আপনি কাস্টম error pages তৈরি করতে পারেন।


২. Error Handler ব্যবহার করে কাস্টম Error Page তৈরি করা

Flask-এ আপনি @app.errorhandler() ডেকোরেটর ব্যবহার করে বিভিন্ন ধরনের HTTP ত্রুটির জন্য কাস্টম error page তৈরি করতে পারেন।

উদাহরণ:

from flask import Flask, render_template

app = Flask(__name__)

# 404 ত্রুটি হ্যান্ডল করা
@app.errorhandler(404)
def page_not_found(e):
    return render_template('404.html'), 404

# 500 ত্রুটি হ্যান্ডল করা
@app.errorhandler(500)
def internal_error(e):
    return render_template('500.html'), 500

@app.route("/")
def home():
    return "হোমপেজ"

if __name__ == "__main__":
    app.run(debug=True)

এখানে:

  • @app.errorhandler(404): এটি 404 ত্রুটি জন্য কাস্টম পেজ তৈরি করবে।
  • @app.errorhandler(500): এটি 500 ত্রুটি জন্য কাস্টম পেজ তৈরি করবে।

এবং এই কোডের মধ্যে 404 এবং 500 ত্রুটি সম্পর্কিত কাস্টম পৃষ্ঠা 404.html এবং 500.html টেমপ্লেট ফাইলের মাধ্যমে রেন্ডার করা হবে।


৩. HTML Error Pages তৈরি করা

আপনি 404.html এবং 500.html টেমপ্লেট ফাইল তৈরি করে কাস্টম error pages তৈরি করতে পারেন।

templates/404.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>পৃষ্ঠাটি পাওয়া যায়নি (404)</title>
</head>
<body>
    <h1>দুঃখিত, আপনি যে পৃষ্ঠা খুঁজছেন তা পাওয়া যায়নি!</h1>
    <p><a href="/">হোমপেজে ফিরে যান</a></p>
</body>
</html>

templates/500.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>অভ্যন্তরীণ ত্রুটি (500)</title>
</head>
<body>
    <h1>অভ্যন্তরীণ ত্রুটি ঘটেছে! দুঃখিত, আমরা সমস্যাটি সমাধান করছি।</h1>
    <p><a href="/">হোমপেজে ফিরে যান</a></p>
</body>
</html>

এখানে:

  • 404.html ফাইলটি 404 ত্রুটি হলে দেখানো হবে।
  • 500.html ফাইলটি 500 ত্রুটি হলে দেখানো হবে।

৪. Custom Error Message এবং Logs

কাস্টম ত্রুটি মেসেজ এবং লগস (logs) ব্যবহার করে আপনি ত্রুটির আরও বিস্তারিত তথ্য দেখতে পারবেন। Flask-এ app.logger ব্যবহার করে লগ তৈরি করা যায়।

উদাহরণ:

import logging
from flask import Flask

app = Flask(__name__)

# লগিং কনফিগারেশন
app.logger.setLevel(logging.INFO)

@app.route("/error")
def error():
    app.logger.error('এটি একটি কাস্টম ত্রুটি মেসেজ!')
    return "ত্রুটি ঘটেছে!", 500

if __name__ == "__main__":
    app.run(debug=True)

এখানে:

  • app.logger.error(): এটি ত্রুটির লগ তৈরি করে।
  • লগগুলি Flask অ্যাপ্লিকেশনের কনসোলে বা ফাইল সিস্টেমে সংরক্ষণ করা যেতে পারে, যদি আপনি সেটআপ করেন।

৫. Flask Error Handling এর অন্যান্য ফিচার

  • Exception Handling: Flask একটি সাধারণ try-except ব্লক ব্যবহার করে ত্রুটি ধরতে এবং হ্যান্ডল করতে সক্ষম।
  • Flask Debug Mode: ডিবাগ মোডে Flask স্বয়ংক্রিয়ভাবে কিছু সাধারণ ত্রুটি দেখানোর জন্য একটি ডিবাগ পৃষ্ঠা প্রদর্শন করে। আপনি এটি app.run(debug=True) দিয়ে সক্রিয় করতে পারেন।

৬. Flask Error Handling এর সুবিধা

  1. কাস্টম Error Pages: আপনি সহজেই আপনার অ্যাপ্লিকেশনটির ত্রুটির জন্য কাস্টম পৃষ্ঠা তৈরি করতে পারেন।
  2. ব্যবহারকারী অভিজ্ঞতা (UX): কাস্টম error pages ব্যবহারকারীদের জন্য একটি পরিষ্কার এবং সুন্দর অভিজ্ঞতা প্রদান করে, যেখানে তারা সহজেই মূল পৃষ্ঠায় ফিরে যেতে পারে।
  3. ত্রুটি লোগিং: লগ তৈরি করে আপনি ত্রুটির উৎস এবং কারণ চিহ্নিত করতে পারেন।
  4. Debugging: ডিবাগ মোডে ত্রুটির বিস্তারিত বার্তা দেখানোর মাধ্যমে ডেভেলপমেন্টে সহায়ক হয়।

Flask-এ Error Handling এর জন্য @app.errorhandler() ডেকোরেটর ব্যবহার করা হয়, যা আপনাকে HTTP ত্রুটির জন্য কাস্টম error pages তৈরি করার সুযোগ দেয়। এর মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনের ত্রুটির প্রতিক্রিয়া ব্যবহারকারীদের জন্য আরও পরিষ্কার এবং অর্থপূর্ণ করতে পারেন। app.logger ব্যবহার করে ত্রুটির লগ তৈরি এবং মনিটরিংও করা যায়। Flask এর এই বিল্ট-ইন error handling ব্যবস্থা অ্যাপ্লিকেশনের স্থিতিশীলতা এবং নিরাপত্তা নিশ্চিত করে।

Content added By

Flask অ্যাপ্লিকেশনে Custom Error Pages তৈরি করা একটি গুরুত্বপূর্ণ বিষয়। এই ফিচারটি ব্যবহারকারীদের একটি উন্নত এবং কাস্টম অভিজ্ঞতা প্রদান করতে সাহায্য করে যখন তারা ভুল URL ইনপুট করে (যেমন 404 এরর) অথবা অ্যাপ্লিকেশনের মধ্যে সার্ভার-সাইড কোনো ত্রুটি ঘটে (যেমন 500 এরর)।

Flask-এ Error Handlers ব্যবহার করে আপনি কাস্টম error pages তৈরি করতে পারেন। চলুন দেখি কিভাবে 404 (Page Not Found) এবং 500 (Internal Server Error) এররগুলোর জন্য কাস্টম পেজ তৈরি করা যায়।


১. Flask-এ Custom Error Pages তৈরি করা

Flask-এ 404 এবং 500 এরর এর জন্য কাস্টম error page তৈরি করার জন্য Flask-এর errorhandler() ডেকোরেটর ব্যবহার করা হয়।

উদাহরণ:

from flask import Flask, render_template

app = Flask(__name__)

# 404 Error - Page Not Found Handler
@app.errorhandler(404)
def page_not_found(error):
    return render_template('404.html'), 404

# 500 Error - Internal Server Error Handler
@app.errorhandler(500)
def internal_error(error):
    return render_template('500.html'), 500

@app.route('/')
def home():
    return 'স্বাগতম হোমপেজে!'

if __name__ == "__main__":
    app.run(debug=True)

এখানে:

  • @app.errorhandler(404): এটি 404 এরর পেইজের জন্য error handler ফাংশন তৈরি করেছে।
  • @app.errorhandler(500): এটি 500 এরর পেইজের জন্য error handler ফাংশন তৈরি করেছে।
  • render_template('404.html'): এটি কাস্টম 404 HTML পেজ লোড করবে।
  • render_template('500.html'): এটি কাস্টম 500 HTML পেজ লোড করবে।

২. Custom Error Pages (HTML)

এখন কাস্টম 404 এবং 500 পেজ তৈরি করা যাক।

404.html (Page Not Found)

templates/404.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>404 - Page Not Found</title>
</head>
<body>
    <h1>404</h1>
    <h2>পেজটি খুঁজে পাওয়া যায়নি!</h2>
    <p>আপনি যে পেজটি খুঁজছেন তা আমাদের সাইটে নেই। দয়া করে URL আবার চেক করুন অথবা <a href="/">হোম পেজে ফিরে যান</a></p>
</body>
</html>

500.html (Internal Server Error)

templates/500.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>500 - Internal Server Error</title>
</head>
<body>
    <h1>500</h1>
    <h2>এটি একটি সার্ভার সাইড ত্রুটি।</h2>
    <p>দয়া করে কিছু সময় পর আবার চেষ্টা করুন অথবা <a href="/">হোম পেজে ফিরে যান</a></p>
</body>
</html>

৩. Flask Error Handlers এরর কোড কাস্টমাইজেশন

Flask-এ errorhandler() ডেকোরেটর ব্যবহার করে আপনি কাস্টম এরর পেজ তৈরি করতে পারেন। এভাবে, যখন কোনও নির্দিষ্ট HTTP কোডের এরর ঘটে (যেমন 404 বা 500), তখন Flask সেই এররের জন্য কাস্টম টেমপ্লেট রেন্ডার করে।

উদাহরণ:

@app.errorhandler(404)
def page_not_found(error):
    return render_template('404.html', error=error), 404

@app.errorhandler(500)
def internal_error(error):
    return render_template('500.html', error=error), 500

এখানে, error অবজেক্টটি এরর সম্পর্কে আরো বিস্তারিত তথ্য ধারণ করে, এবং আপনি চাইলে সেটি কাস্টম পেজে পাঠাতে পারেন।


৪. Custom Error Pages জন্য Styling এবং JavaScript

আপনি চাইলে কাস্টম 404 এবং 500 error pages-এর জন্য স্টাইলিং বা JavaScript ফিচারও যোগ করতে পারেন। উদাহরণস্বরূপ, আপনি এগুলিকে আরও ইন্টারঅ্যাকটিভ বা আকর্ষণীয় করতে পারেন।

404 পেজে CSS যোগ করা:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>404 - Page Not Found</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            text-align: center;
            padding: 50px;
            background-color: #f8d7da;
            color: #721c24;
        }
        h1 {
            font-size: 100px;
        }
        p {
            font-size: 18px;
        }
    </style>
</head>
<body>
    <h1>404</h1>
    <h2>পেজটি খুঁজে পাওয়া যায়নি!</h2>
    <p>আপনি যে পেজটি খুঁজছেন তা আমাদের সাইটে নেই। দয়া করে URL আবার চেক করুন অথবা <a href="/">হোম পেজে ফিরে যান</a></p>
</body>
</html>

এখানে একটি সিম্পল স্টাইলিং যোগ করা হয়েছে যা 404 পেজটিকে সুন্দরভাবে উপস্থাপন করবে।


৫. Flask-এ অন্যান্য Error Handling

Flask আরও অনেক ধরনের এরর হ্যান্ডলিং সমর্থন করে, যেমন:

  • 400 - Bad Request
  • 403 - Forbidden
  • 405 - Method Not Allowed
  • 422 - Unprocessable Entity

আপনি চাইলে এই এররের জন্যও কাস্টম পেজ তৈরি করতে পারেন:

@app.errorhandler(400)
def bad_request(error):
    return render_template('400.html'), 400

@app.errorhandler(403)
def forbidden(error):
    return render_template('403.html'), 403

Flask-এ Custom Error Pages তৈরি করা খুবই সহজ এবং গুরুত্বপূর্ণ, কারণ এটি ব্যবহারকারীদের একটি ভালো অভিজ্ঞতা প্রদান করে যখন কোনো ত্রুটি ঘটে। 404 এবং 500 এররের জন্য কাস্টম পেজ তৈরি করে আপনি আপনার অ্যাপ্লিকেশনটির ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পারেন। errorhandler() ফাংশন ব্যবহার করে Flask অ্যাপ্লিকেশনে কাস্টম error pages সেটআপ করা যায়, যা একটি সহজ এবং কার্যকর পদ্ধতি।

Content added By

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 এর সুবিধা:

  1. এডিট অ্যান্ড রিলোড: কোড পরিবর্তন করার পর Flask স্বয়ংক্রিয়ভাবে সার্ভার রিলোড হয়ে যায়।
  2. স্ট্যাক ট্রেস: ত্রুটি হলে স্ট্যাক ট্রেস প্রদান করে, যাতে আপনি দ্রুত ত্রুটি সনাক্ত করতে পারেন।
  3. ডিবাগ কনসোল: ব্রাউজারে ডিবাগ কনসোল পাওয়া যায়, যা ডেভেলপমেন্টে সাহায্য করে।

৪. 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-এর এই ফিচারগুলো ডেভেলপমেন্ট প্রক্রিয়াকে সহজ এবং ত্রুটি মুক্ত করতে সাহায্য করে।

Content added By

Flask অ্যাপ্লিকেশনগুলিতে Global Error Handling একটি গুরুত্বপূর্ণ অংশ, যা অ্যাপ্লিকেশনটি বিভিন্ন ধরনের ত্রুটি বা অপ্রত্যাশিত পরিস্থিতিতে সঠিকভাবে সাড়া দিতে সক্ষম করে। Flask ত্রুটি বা এরর হ্যান্ডলিংকে খুব সহজ করে দিয়েছে, যেখানে আপনি কাস্টম Error Handlers তৈরি করতে পারেন যা বিশেষ HTTP স্ট্যাটাস কোড (যেমন 404, 500) এর জন্য কাস্টম রেসপন্স প্রদান করবে।

Flask এর Global Error Handling কনফিগার করার জন্য কিছু সহজ পদক্ষেপ অনুসরণ করা হয়, যেখানে আপনার অ্যাপ্লিকেশন যে ধরনের ত্রুটি পাবে, তার জন্য প্রপার রেসপন্স ফেরত দেওয়া হয়।


১. Flask Error Handling এর মূল ধারণা

Flask-এ Error Handling একটি ইন্টারনাল প্রক্রিয়া যা ব্যবহারকারীর জন্য উপযুক্ত ত্রুটি পেজ তৈরি করে এবং ত্রুটির ধরন অনুযায়ী একটি কাস্টম রেসপন্স প্রদান করে।

Flask Error Handling Syntax:

@app.errorhandler(404)
def not_found_error(error):
    return render_template('404.html'), 404

@app.errorhandler(500)
def internal_error(error):
    db.session.rollback()  # যদি ডাটাবেসে কোনো সমস্যা থাকে
    return render_template('500.html'), 500

এখানে:

  • @app.errorhandler(status_code): এই ডেকোরেটরটি ত্রুটি কোড অনুসারে কাস্টম হ্যান্ডলার তৈরি করতে ব্যবহৃত হয়।
  • error: এটি ত্রুটির বিস্তারিত তথ্য প্রদান করে।

২. Global Error Handling কনফিগার করা

ধাপ ১: app.errorhandler() ব্যবহার করে কাস্টম Error Handlers তৈরি করা

Flask-এ errorhandler() ডেকোরেটরের মাধ্যমে আপনি যেকোনো ধরনের HTTP স্ট্যাটাস কোডের জন্য কাস্টম ত্রুটি হ্যান্ডলার তৈরি করতে পারেন।

উদাহরণ:

from flask import Flask, render_template

app = Flask(__name__)

# 404 - Page Not Found Error Handler
@app.errorhandler(404)
def not_found_error(error):
    return render_template('404.html'), 404

# 500 - Internal Server Error Handler
@app.errorhandler(500)
def internal_error(error):
    return render_template('500.html'), 500

# 403 - Forbidden Error Handler
@app.errorhandler(403)
def forbidden_error(error):
    return render_template('403.html'), 403

# 400 - Bad Request Error Handler
@app.errorhandler(400)
def bad_request_error(error):
    return render_template('400.html'), 400

if __name__ == "__main__":
    app.run(debug=True)

এখানে:

  • 404 Error: পেজ না পাওয়ার ত্রুটির জন্য কাস্টম রেসপন্স।
  • 500 Error: সার্ভার সমস্যা বা ইন্টারনাল সার্ভার ত্রুটির জন্য কাস্টম রেসপন্স।
  • 403 Error: ব্যবহারকারী অনুমতি না থাকলে ত্রুটি।
  • 400 Error: ভুল রিকোয়েস্ট বা Bad Request ত্রুটি।

এভাবে, আপনি প্রতিটি ত্রুটির জন্য পৃথক HTML পেজ তৈরি করতে পারেন যা ব্যবহারকারীর জন্য আরও তথ্য বা নির্দেশনা প্রদান করবে।

ধাপ ২: কাস্টম টেমপ্লেট তৈরি করা

আপনি 404.html, 500.html এবং অন্যান্য ত্রুটি পেজের জন্য কাস্টম HTML টেমপ্লেট তৈরি করতে পারেন।

404.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Page Not Found</title>
</head>
<body>
    <h1>404 - Page Not Found</h1>
    <p>Sorry, the page you are looking for does not exist.</p>
</body>
</html>

500.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Internal Server Error</title>
</head>
<body>
    <h1>500 - Internal Server Error</h1>
    <p>Oops! Something went wrong on the server.</p>
</body>
</html>

এভাবে আপনি যেকোনো ত্রুটি বা সমস্যার জন্য কাস্টম পেজ তৈরি করতে পারবেন এবং ব্যবহারকারীদের আরও কার্যকরভাবে সমস্যাগুলির সমাধান দিতে পারবেন।


৩. Flask এর Default Error Handling কাস্টমাইজ করা

Flask ডিফল্ট ত্রুটি পেজগুলো প্রদর্শন করে, কিন্তু আপনি চাইলে সেগুলিকে কাস্টমাইজ করতে পারেন।

উদাহরণ:

@app.errorhandler(Exception)
def handle_unexpected_error(error):
    return render_template('error.html', error=error), 500

এখানে:

  • Exception: এটি সমস্ত অপ্রত্যাশিত ত্রুটি বা এক্সেপশনকে কভার করবে এবং কাস্টম error.html টেমপ্লেটের মাধ্যমে রেসপন্স প্রদান করবে।
  • handle_unexpected_error: কোনো অপ্রত্যাশিত ত্রুটি ঘটলে এই ফাংশনটি চলবে এবং ত্রুটির বিবরণ সহ একটি কাস্টম পেজ দেখাবে।

৪. Logging এর মাধ্যমে Error Handling

Flask অ্যাপ্লিকেশনে লগিং সিস্টেম সেটআপ করা খুবই গুরুত্বপূর্ণ, বিশেষত যখন আপনি একটি প্রোডাকশন অ্যাপ্লিকেশন তৈরি করছেন। Flask এর লগিং ব্যবস্থাপনা logging লাইব্রেরি ব্যবহার করে করা যায়।

উদাহরণ:

import logging
from logging import FileHandler

@app.before_first_request
def setup_logging():
    if not app.debug:
        file_handler = FileHandler('error.log')
        file_handler.setLevel(logging.ERROR)
        app.logger.addHandler(file_handler)

@app.errorhandler(500)
def internal_error(error):
    app.logger.error(f"Server Error: {error}, route: {request.url}")
    return render_template('500.html'), 500

এখানে:

  • app.logger.error(): এটি ত্রুটি বা সমস্যার লগিং তৈরি করে, যা সার্ভার লোগ ফাইলে স্টোর করা হবে।
  • FileHandler: এটি একটি ফাইল তৈরি করে যেখানে সমস্ত ত্রুটি লগ থাকবে।

এভাবে আপনি সমস্ত ত্রুটি ট্র্যাক করতে পারেন এবং পরে তা বিশ্লেষণ করে দ্রুত সমাধান করতে পারবেন।


৫. Custom Error Response with JSON

আপনি যদি API তৈরি করে থাকেন এবং JSON ফরম্যাটে ত্রুটি রেসপন্স পাঠাতে চান, তাহলে Flask-এ JSON Error Handling সহজেই কাস্টমাইজ করা যায়।

উদাহরণ:

from flask import jsonify

@app.errorhandler(404)
def not_found_error(error):
    return jsonify({"message": "Resource not found", "status": 404}), 404

@app.errorhandler(500)
def internal_error(error):
    return jsonify({"message": "Internal server error", "status": 500}), 500

এখানে:

  • 404 এবং 500 ত্রুটির জন্য JSON রেসপন্স দেওয়া হচ্ছে।

Flask অ্যাপ্লিকেশনে Global Error Handling খুবই গুরুত্বপূর্ণ একটি অংশ, যা অ্যাপ্লিকেশনকে রেসপন্সযোগ্য এবং ব্যবহারকারী-বান্ধব করে তোলে। Flask-এ @app.errorhandler() ডেকোরেটরের মাধ্যমে কাস্টম ত্রুটি হ্যান্ডলার তৈরি করা, কাস্টম টেমপ্লেট ব্যবহার করে ত্রুটির জন্য স্পষ্ট বার্তা প্রদর্শন করা এবং লগিং সিস্টেমের মাধ্যমে ত্রুটির রেকর্ড রাখা আপনার অ্যাপ্লিকেশনকে আরও শক্তিশালী ও সুরক্ষিত করবে।

Content added By
Promotion

Are you sure to start over?

Loading...