কম্পিউটার টিউটোরিয়াল

PHP 7-এ Exceptions এবং Error


PHP-এর পুরানো সংস্করণে, আমরা শুধু এক্সসেপশন হ্যান্ডেল করতে পারতাম। এরর হ্যান্ডেল করা সম্ভব ছিল না। Fatal Error-এর কেসে, এটি সম্পূর্ণ অ্যাপ্লিকেশন বা অ্যাপ্লিকেশনের কিছু অংশ हाल্ট করত। এই সমস্যা সমাধান করতে, PHP 7 throwable ইন্টারফেস যোগ করেছে যাতে এক্সসেপশন এবং এরর দুটি হ্যান্ডেল করা যায়।

Exception: যেখানে একটি ফেটাল এবং রিকভারেবল এরর ঘটে, PHP 7 সম্পূর্ণ অ্যাপ্লিকেশন বা স্ক্রিপ্ট এক্সিকিউশন हाल্ট করার বদলে একটি এক্সসেপশন থ্রো করে।

Error: PHP 7 TypeError, ArithmeticError, ParserError, এবং AssertionError থ্রো করে, কিন্তু ওয়ার্নিং এবং নোটিস এরর অপরিবর্তিত থাকে। try/catch ব্লক ব্যবহার করে, এরর ইনস্ট্যান্স ক্যাচ করা যায়, এবং এখন, FatalErrors একটি এরর ইনস্ট্যান্স থ্রো করতে পারে। PHP 7-এ, একটি throwable ইন্টারফেস যোগ করা হয়েছে দুইটি এক্সসেপশন ব্রাঞ্চ, Exception এবং Error, throwable ইমপ্লিমেন্ট করার জন্য একীভূত করতে।

উদাহরণ

<?php    class XYZ {       public function Hello() {          echo "class XYZ\n";       }    }    try {       $a = new XYZ();       $a->Hello();       $a = null;       $a->Hello();    }    catch (Error $e) {       echo "Error occurred". PHP_EOL;       echo $e->getMessage() . PHP_EOL ;       echo "File: " . $e->getFile() . PHP_EOL;       echo "Line: " . $e->getLine(). PHP_EOL;    }    echo "Continue the PHP code\n"; ?>

আউটপুট

উপরের প্রোগ্রামে, আমরা নিচের এরর পাব −

class XYZ Error occurred Call to a member function Hello() on null File: /home/cg/root/9008538/main.php Line: 11 Continue with the PHP code

নোট: উপরের উদাহরণে, আমরা একটি null অবজেক্টে একটি মেথড কল করছি। catch ব্যবহার করে এক্সসেপশন হ্যান্ডেল করা হয়েছে এবং তারপর PHP কোড কন্টিনিউ করছে।

Arithmetic Error

আমরা Arithmetic error-এর DivisionByZeroError ব্যবহার করব। কিন্তু এখনও ডিভিশন অপারেটরে ওয়ার্নিং এরর পাব।

উদাহরণ: arithmetic error

<?php    $x = 10;    $y = 0;    try {       $z = intdiv($x , $y);    }    catch (DivisionByZeroError $e) {       echo "Error has occured\n";       echo $e->getMessage() . PHP_EOL ;       echo "File: " . $e->getFile() . PHP_EOL;       echo "Line: " . $e->getLine(). PHP_EOL;    }    echo "$z \n";    echo " continues with the PHP code\n"; ?>

আউটপুট

উপরোক্ত প্রোগ্রাম ওয়ার্নিং এরর সহ এক্সিকিউট হবে −

Division by zero File: /home/cg/root/9008538/main.php Line: 5 continues with the PHP code

নোট: উপরের প্রোগ্রামে, আমরা intdiv() ফাংশনের ভিতরে DivisionByZeroError ক্যাচ এবং রিপোর্ট করেছি।


  1. PHP-এ restore_error_handler() ফাংশন

  2. PHP-এ error_log() ফাংশন

  3. PHP-এ user_error() ফাংশন

  4. PHP-এ error_get_last() ফাংশন