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

PHP এক্সেপশন থ্রো করা


ভূমিকা

Throwable ইন্টারফেস Error এবং Exception ক্লাস দ্বারা ইমপ্লিমেন্ট করা হয়। সকল প্রিডিফাইন Error ক্লাস Error ক্লাস থেকে ইনহেরিট করা। সংশ্লিষ্ট Error ক্লাসের ইনস্ট্যান্স try ব্লকে থ্রো করা হয় এবং উপযুক্ত catch ব্লকে প্রসেস করা হয়।

Error থ্রো করা

নরমাল এক্সিকিউশন (যখন try ব্লকে কোনো এক্সেপশন থ্রো করা হয় না) সিকোয়েন্সে শেষ catch ব্লকের পর চালু থাকে।

উদাহরণ

<?php
function div($x, $y) {
    if (!$y) {
        throw new Exception('Division by zero.');
    }
    return $x/$y;
}
try {
    echo div(10,5) . "\n";
    echo div(10,0) . "\n";
} catch (Exception $e) {
    echo 'Caught exception: ', $e->getMessage(), "\n";
}
// Continue execution
echo "Execution continues\n";
?>

আউটপুট

নিচের আউটপুট দেখানো হয়:

2
Caught exception: Division by zero.
Execution continues

নিচের উদাহরণে, TypeError থ্রো করা হয় একটি ফাংশন এক্সিকিউট করার সময় কারণ উপযুক্ত আর্গুমেন্ট পাস করা হয়নি। সংশ্লিষ্ট এরর মেসেজ দেখানো হয়।

উদাহরণ

<?php
function add(int $num1, int $num2){
    return $num1 + $num2;
}
try {
    $value = add(1, 'one');
} catch (TypeError $e) {
    echo $e->getMessage(). "\n";
}
?>

আউটপুট

নিচের আউটপুট দেখানো হয়:

Argument 2 passed to add() must be of the type integer, string given

SPL এক্সেপশন

স্ট্যান্ডার্ড PHP লাইব্রেরিতে প্রিডিফাইনড এক্সেপশন রয়েছে:

LogicExceptionপ্রোগ্রাম লজিকের এরর উপস্থাপন করে।
BadFunctionCallExceptionযদি কলব্যাক অনডিফাইনড ফাংশনকে রেফার করে বা কিছু আর্গুমেন্ট মিসিং থাকে।
BadMethodCallExceptionযদি কলব্যাক অনডিফাইনড মেথডকে রেফার করে বা কিছু আর্গুমেন্ট মিসিং থাকে।
DomainExceptionযদি কোনো মান একটি ডিফাইনড ভ্যালিড ডেটা ডোমেন মেনে না চলে।
InvalidArgumentExceptionযদি কোনো আর্গুমেন্ট এক্সপেক্টেড টাইপের না হয়।
LengthExceptionযদি কোনো দৈর্ঘ্য অবৈধ হয়।
OutOfRangeExceptionযদি একটি অবৈধ ইন্ডেক্স রিকোয়েস্ট করা হয়।
RuntimeExceptionযদি একটি এরর যা শুধু রানটাইমে পাওয়া যায় ঘটে।
OutOfBoundsExceptionযদি কোনো মান একটি ভ্যালিড কি না হয়।
OverflowExceptionযদি একটি ফুল কন্টেইনারে এলিমেন্ট যোগ করা হয়।
RangeExceptionপ্রোগ্রাম এক্সিকিউশন중에 রেঞ্জ এরর ইন্ডিকেট করার জন্য। অ্যারিথমেটিক এরর অন্ডার/ওভারফ্লো ব্যতীত।
UnderflowExceptionযদি একটি খালি কন্টেইনারে অবৈধ অপারেশন করা হয়, যেমন এলিমেন্ট রিমুভ করা।
UnexpectedValueExceptionযদি কোনো মান একটি সেট অফ ভ্যালুয়ের সাথে মেলে না।

নিচের উদাহরণে OutOfBoundsException থ্রো করা হয় যখন একটি PHP অ্যারেতে কি পাওয়া যায় না:

উদাহরণ

<?php
$arr=array("one"=>1, "two"=>2,"three"=>3,"four"=>4);
$key="ten";
try{
    if (array_key_exists($key, $arr)==FALSE){
        throw new OutOfBoundsException("key not found");
    }
    else {
        echo $arr[$key];
    }
}
catch (OutOfBoundsException $e){
    echo $e->getMessage(). "\n";
}
?>

আউটপুট

নিচের আউটপুট দেখানো হয়:

key not found

  1. C++-এ এক্সসেপশন কীভাবে কাজ করে

  2. প্রাইরে এক্সেপশন হ্যান্ডলিং মাস্টার করুন: রেলস কনসোলে অ্যাডভান্সড টেকনিক

  3. রুবিতে কাস্টোম এক্সেপশন মাস্টার করুন: ধাপে ধাপে গাইড

  4. রুবি এক্সেপশন মাস্টার করুন: আত্মবিশ্বাসের সাথে এরর হ্যান্ডলিং