TypeError এবং ParseError PHP 7-এর দুটি গুরুত্বপূর্ণ ত্রুটি শ্রেণি (Error Classes) যা কোডের নির্ভুলতা এবং নিরাপত্তা নিশ্চিত করতে সহায়ক। এই দুটি ত্রুটি ফাংশন বা এক্সপ্রেশন ব্যবহারে ভুল টাইপের ডেটা বা ভুল সিনট্যাক্সের কারণে ঘটে। PHP 7 থেকে এই ত্রুটিগুলি আরও কঠোরভাবে সংজ্ঞায়িত হয়েছে এবং ডেভেলপারদের কোডে ভুল শনাক্ত করা সহজ করেছে।
এখানে আমরা এই দুটি ত্রুটির মধ্যে পার্থক্য এবং তাদের ব্যবহারের ক্ষেত্রগুলি বিস্তারিতভাবে আলোচনা করব।
TypeError (টাইপ ত্রুটি)
TypeError একটি বিশেষ ধরনের ত্রুটি যা ঘটে যখন ফাংশনে বা মেথডে ভুল টাইপের মান পাস করা হয়। PHP 7-এ TypeError একটি Throwable ইন্টারফেস বাস্তবায়নকারী একটি শ্রেণি (class), এবং এটি বিশেষভাবে Strict Mode এবং Type Hinting ব্যবহারের সময় ঘটে।
TypeError এর কারণ:
- টাইপ ডিক্লারেশন অনুযায়ী ফাংশনে সঠিক টাইপের আর্গুমেন্ট না পাঠানো হলে।
- ফাংশনের রিটার্ন টাইপ মেলেনি।
TypeError উদাহরণ:
<?php
declare(strict_types=1);
function addNumbers(int $a, int $b): int {
return $a + $b;
}
echo addNumbers(5, "10"); // TypeError: strict mode সক্রিয় থাকায় টাইপ কনভার্শন হবে না
?>এখানে, addNumbers ফাংশনে int টাইপ ডিক্লারেশন করা হয়েছে, তবে "10" একটি স্ট্রিং। strict mode সক্রিয় থাকায়, PHP একটি TypeError ছুড়ে দিবে কারণ "10" একটি স্ট্রিং এবং এটি int-এ কনভার্ট করা যাবে না।
TypeError Handling:
TypeError হ্যান্ডল করতে, আপনি try-catch ব্লক ব্যবহার করতে পারেন।
<?php
declare(strict_types=1);
function divide(int $a, int $b): float {
return $a / $b;
}
try {
echo divide(5, "10"); // TypeError: strict mode সক্রিয় থাকায় টাইপ কনভার্শন হবে না
} catch (TypeError $e) {
echo "Caught TypeError: " . $e->getMessage();
}
?>এখানে, divide ফাংশনে টাইপ mismatch হওয়ায় TypeError ক্যাচ করা হয়েছে।
ParseError (পার্স ত্রুটি)
ParseError তখন ঘটে যখন কোডে সঠিক সিনট্যাক্স নেই বা ভুল সিনট্যাক্স ব্যবহার করা হয়েছে। এটি সাধারণত তখন ঘটে যখন PHP কোডটি পার্স (parse) করার সময় সিনট্যাক্স ভুল থাকে, যেমন ফাংশনের নামের পরে কলন না থাকা, বন্ধনী ভুলভাবে লেখা, বা কোটেশন সঠিক না হওয়া।
ParseError এর কারণ:
- ভুল সিনট্যাক্স, যেমন ভুল ব্র্যাকেট ব্যবহার, ভুল পদ্ধতিতে ফাংশন বা মেথড কল করা ইত্যাদি।
- কোডের মধ্যে অবৈধ অক্ষর বা কোটেশন সঠিকভাবে ব্যবহার না করা।
ParseError উদাহরণ:
<?php
echo "Hello World; // ParseError: Sintax error, unexpected end of file
?>এখানে, echo "Hello World; লাইনটি ভুলভাবে শেষ হয়েছে কারণ স্ট্রিংটি সঠিকভাবে বন্ধ করা হয়নি। PHP কোডটি পার্স করার সময় একটি ParseError ছুড়ে দিবে।
ParseError Handling:
ParseError সাধারণত রানটাইমে না, বরং কোড পার্স করার সময় ঘটে, তাই এটি সাধারণত try-catch ব্লক দিয়ে ক্যাচ করা যায় না। তবে, PHP Error Handler ব্যবহার করে ParseError কনফিগার করা যায়।
TypeError এবং ParseError এর পার্থক্য
| বৈশিষ্ট্য | TypeError | ParseError |
|---|---|---|
| ঘটনার কারণ | ফাংশনে বা মেথডে ভুল টাইপের মান পাস করা হলে। | কোডে ভুল সিনট্যাক্স বা কাঠামো ব্যবহার করা হলে। |
| ঘটনার সময় | রানটাইমে, যখন ফাংশন বা মেথড কল হয়। | কোড পার্স করার সময়। |
| কার্যকারিতা | Strict Mode বা Type Hinting এ টাইপ mismatch হলে ঘটে। | কোডের সিনট্যাক্স ভুল হলে ঘটে। |
| ত্রুটি ধরার উপায় | try-catch ব্লক ব্যবহার করা যায়। | সাধারণত ParseError রUNTIME-এ ক্যাচ করা যায় না, তবে PHP Error Handler ব্যবহার করা যায়। |
| উদাহরণ | টাইপ mismatch যেমন int এর বদলে string প্রদান করা। | ভুল সিনট্যাক্স যেমন স্ট্রিংয়ের শেষে কোটেশন না থাকা। |
সারসংক্ষেপ
TypeErrorতখন ঘটে যখন আপনি ফাংশন বা মেথডে ভুল টাইপের ডেটা পাস করেন। এটিStrict ModeবাType Hintingব্যবহারে ঘটে এবংTypeErrorত্রুটির মাধ্যমে রিপোর্ট করা হয়।ParseErrorতখন ঘটে যখন কোডের সিনট্যাক্স ভুল থাকে এবং PHP কোডটিকে পার্স (parse) করার সময় এটি শনাক্ত হয়। এটি সাধারণত কোডে ভুল লেখার কারণে ঘটে এবং রানটাইমে নয়, কোড পার্স করার সময় ঘটে।
এই দুটি ত্রুটি PHP 7-এর শক্তিশালী ত্রুটি শনাক্তকরণ ব্যবস্থার অংশ, যা ডেভেলপারদের সঠিক এবং নির্ভুল কোড লিখতে সহায়ক।
Read more