PHP তে Error Handling এবং Exception Management গাইড ও নোট

Database Tutorials - পিএইচপি মাইএসকিউএল আই (PHP MySQL) - Error Handling এবং Logging
228

ত্রুটি (Error) এবং এক্সসেপশন (Exception) কী?

পিএইচপি তে ত্রুটি (Error) এবং এক্সসেপশন (Exception) হলো এমন ঘটনা যেগুলি কোডের সঠিকভাবে কার্যকরী হওয়ার পথে বাধা সৃষ্টি করতে পারে। Error হলো একটি সমস্যা যা কোড চালানোর সময় ঘটে, যেমন সিনট্যাক্স এরর বা টাইপ মিসম্যাচ। অন্যদিকে, Exception হলো এমন একটি অবস্থা যেখানে একটি নির্দিষ্ট পরিস্থিতি (যেমন, ডেটাবেস কানেকশন ব্যর্থ হওয়া) ঘটলে একটি কোড এক্সিকিউশন থামিয়ে দেয়া হয়।

পিএইচপি তে ত্রুটি হ্যান্ডলিং এবং এক্সসেপশন ম্যানেজমেন্ট ব্যবহারের মাধ্যমে কোডের ব্যর্থতাগুলি নিয়ন্ত্রণ করা যায়, যা ডেভেলপারদের কোডের গুণমান ও স্থিতিশীলতা বৃদ্ধি করতে সাহায্য করে।


পিএইচপি তে Error Handling

পিএইচপি তে ত্রুটি হ্যান্ডলিং এর জন্য বেশ কিছু বিল্ট-ইন ফাংশন ও কনফিগারেশন অপশন রয়েছে। এর মধ্যে সবচেয়ে গুরুত্বপূর্ণ হলো error_reporting() এবং set_error_handler() ফাংশন।

১. error_reporting() ফাংশন

এই ফাংশনটি পিএইচপি তে ত্রুটি রটানো বা নির্দিষ্ট স্তরের ত্রুটিগুলি প্রদর্শন করতে ব্যবহার হয়।

<?php
// সব ধরনের ত্রুটি দেখানোর জন্য error_reporting() ব্যবহার করা
error_reporting(E_ALL);

// বা শুধুমাত্র নির্দিষ্ট ত্রুটি দেখানোর জন্য
error_reporting(E_ERROR | E_WARNING | E_PARSE);
?>

E_ALL এর মানে হলো সব ধরনের ত্রুটি দেখানো, এবং E_ERROR | E_WARNING | E_PARSE এর মানে হলো শুধুমাত্র গুরুতর ত্রুটি, সতর্কতা এবং সিনট্যাক্স ত্রুটি দেখানো হবে।

২. set_error_handler() ফাংশন

এটি একটি কাস্টম ত্রুটি হ্যান্ডলার ফাংশন সেট করতে ব্যবহৃত হয়। এর মাধ্যমে আপনি ত্রুটির ধরণ অনুযায়ী নির্দিষ্ট অ্যাকশন নিতে পারেন।

<?php
// কাস্টম ত্রুটি হ্যান্ডলার ফাংশন
function customError($errno, $errstr) {
    echo "Error: [$errno] $errstr<br>";
}

// set_error_handler() ব্যবহার করে কাস্টম ত্রুটি হ্যান্ডলার সেট করা
set_error_handler("customError");

// একটি ত্রুটি ঘটানো
echo($test);
?>

এখানে, set_error_handler() ফাংশনটি customError() নামক একটি কাস্টম ত্রুটি হ্যান্ডলার ফাংশন সেট করেছে। এই হ্যান্ডলারটি ত্রুটি ঘটলে তা কাস্টম মেসেজের মাধ্যমে প্রদর্শন করবে।


পিএইচপি তে Exception Handling

এক্সসেপশন হ্যান্ডলিং পিএইচপি তে ত্রুটি সমাধান করার একটি শক্তিশালী উপায়, যা আপনার কোডকে আরও পরিষ্কার এবং ত্রুটি থেকে রক্ষা করে। try, catch, এবং throw এই তিনটি মূল কিওয়ার্ডের মাধ্যমে এক্সসেপশন হ্যান্ডলিং করা হয়।

১. try এবং catch ব্লক

এটি একটি নির্দিষ্ট ব্লকে কোড চালানোর সময় যদি কোনো এক্সসেপশন ঘটে, তা catch ব্লকে ধরা হয়। উদাহরণস্বরূপ:

<?php
try {
    // কিছু কোড যা এক্সসেপশন তৈরি করতে পারে
    if (!file_exists("testfile.txt")) {
        throw new Exception("ফাইলটি পাওয়া যায়নি");
    }
} catch (Exception $e) {
    // এক্সসেপশন হ্যান্ডলিং
    echo "Caught exception: " . $e->getMessage();
}
?>

এখানে, যদি testfile.txt ফাইলটি না পাওয়া যায়, তবে throw দ্বারা এক্সসেপশন তৈরি হবে এবং তা catch ব্লকে ধরা হবে। getMessage() এর মাধ্যমে এক্সসেপশনটি সম্পর্কে বিস্তারিত বার্তা প্রদর্শন করা হবে।

২. throw কিওয়ার্ড

throw কিওয়ার্ডটি এক্সসেপশন তৈরি করতে ব্যবহৃত হয়। আপনি আপনার কোডে যেখানে ইচ্ছা এক্সসেপশন তৈরি করতে পারেন।

<?php
function checkAge($age) {
    if ($age < 18) {
        throw new Exception("আপনাকে 18 বছরের বেশি হতে হবে");
    }
    return true;
}

try {
    checkAge(16);
} catch (Exception $e) {
    echo "Caught exception: " . $e->getMessage();
}
?>

এখানে, checkAge() ফাংশনে যদি বয়স ১৮ বছরের কম হয়, তবে একটি এক্সসেপশন তৈরি হবে এবং তা catch ব্লকে ধরা হবে।


MySQLi বা PDO তে Error Handling

পিএইচপি মাইএসকিউএল সংযোগের সময়ও ত্রুটি হ্যান্ডলিং অত্যন্ত গুরুত্বপূর্ণ। MySQLi এবং PDO উভয়ই ত্রুটি হ্যান্ডলিং সমর্থন করে।

১. MySQLi তে Error Handling

MySQLi এর মাধ্যমে সংযোগের সময় ত্রুটি হ্যান্ডলিং করতে হলে, mysqli_report() ব্যবহার করতে পারেন।

<?php
// MySQLi এর মাধ্যমে ত্রুটি দেখানোর জন্য
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

$mysqli = new mysqli("localhost", "username", "password", "database");

// যদি সংযোগে ত্রুটি ঘটে, তা স্বয়ংক্রিয়ভাবে ধরবে
?>

এখানে, mysqli_report() ফাংশনটি MySQLi তে ত্রুটি রিপোর্টিং চালু করে। MYSQLI_REPORT_ERROR এবং MYSQLI_REPORT_STRICT ব্যবহার করে ত্রুটিগুলি দেখানো এবং কঠোরভাবে ধরানো হয়।

২. PDO তে Error Handling

PDO তে ত্রুটি হ্যান্ডলিং করতে setAttribute() ব্যবহার করা হয়।

<?php
try {
    $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // ভুল SQL কোয়েরি লিখে ত্রুটি ঘটানো
    $pdo->exec("INVALID SQL QUERY");
} catch (PDOException $e) {
    echo "PDO Error: " . $e->getMessage();
}
?>

এখানে, setAttribute() দ্বারা PDO তে ERRMODE_EXCEPTION সেট করা হয়েছে, যার ফলে PDO ত্রুটি ঘটলে এক্সসেপশন নিক্ষেপ করবে এবং তা catch ব্লকে ধরা হবে।


সারাংশ

পিএইচপি তে Error Handling এবং Exception Management খুবই গুরুত্বপূর্ণ বিষয়। ত্রুটি হ্যান্ডলিং এর মাধ্যমে আপনি আপনার কোডের ত্রুটিগুলি সহজে ধরতে এবং পরিচালনা করতে পারবেন। error_reporting() এবং set_error_handler() ফাংশন দিয়ে ত্রুটির ধরন কাস্টমাইজ করা সম্ভব, এবং try, catch, এবং throw দ্বারা এক্সসেপশন হ্যান্ডলিং করা যায়। MySQLi এবং PDO তে ত্রুটি হ্যান্ডলিং এর মাধ্যমে ডেটাবেস সংযোগের ত্রুটিগুলি নিরাপদভাবে পরিচালনা করা সম্ভব। এর মাধ্যমে আপনার অ্যাপ্লিকেশন আরও স্থিতিশীল এবং রোবস্ট হতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...