JS Error দেখে Mirror
জাভাস্ক্রিপ্ট প্রোগ্রামিং করার সময় বিভিন্ন ধরনের ত্রুটি (error) হতে পারে। এরর হলে কনসাল বা টার্মিনালে error ম্যাসেজ দেখা যায়। ডেভেলপার হিসেবে তোকে এরর মেসেজ পড়তে হবে। বুঝার চেষ্টা করতে হবে। প্রথম প্রথম হয়তো বুঝবি না। তবে করতে করতে একসময় বুঝতে পারবি।
সিনট্যাক্স ত্রুটি (Syntax Error)
Syntax Error হচ্ছে, তুই যদি কোনো কোডে ভুল সিনট্যাক্স লিখিস অর্থাৎ একটা ব্র্যাকেট বা সেমিকোলন না দিলে অথবা বানান ভুল লিখলে এই ধরনের ভুল হয়। অনেক সময় এরর হলে ব্রাউজার কোড রান করে না বা কনসোলে Error ম্যাসেজ দিয়ে দেয়।
নিচে ভ্যারিয়েবল x ঘোষণা করতে গিয়ে কোনো মান দেওয়া হয়নি। তাই এইটা একটা সিনট্যাক্স এরর দিবে।
const xUncaught SyntaxError: Missing initializer in const declaration
নিচের কোডে একটা ব্র্যাকেট দিতে ভুলে গেছি। তাই এইটা একটা সিনট্যাক্স এরর দিবে।
console.log('Hello!'
Uncaught SyntaxError: missing ) after argument list
আবার স্ট্রিং লিখতে গিয়ে যদি কোটেশন না দিস, তাহলে এইটা লেখার ভুল, তাই এইটা সিনট্যাক্স এরর দিবে।
const bhai = 'Sal Man Khai
Uncaught SyntaxError: Invalid or unexpected tokenঅবজেক্টের দুইটা প্রোপার্টির মাঝখানে কমা না দিলে বা অ্যারের দুইটা উপাদানের মাঝখানে কমা না দিলে সিনট্যাক্স এরর দিবে।
const person = {
name: "Alice"
age: 25
};ভেরিয়েবলের নামের মধ্যে রিজার্ভ কি-ওয়ার্ড ইউজ করলে সিনট্যাক্স এরর দিবে।
const for = 0;ফর লুপের ভিতরে চিপার মধ্যে দেখবি let লিখতে L বড় হাতের হয়ে গেছে এইটা ইনকারেক্ট কীওয়ার্ড এবং একটা সিনট্যাক্স এরর দিবে।
for (Let i = 0; i < 5; i++){
console.log(i)
}অর্থাৎ কোড টাইপ করতে গেলে বা লিখতে গেলে আমরা খুচরা কিছু ভুল করে ফেলি, যেগুলোকে জাভাস্ক্রিপ্ট ঠিকমতো প্রসেস করতে পারে না, অর্থাৎ যেসব লেখার মধ্যেই ভুল, সেগুলোই সিনট্যাক্স এরর।
TypeError
TypeError ঘটে তখনই, যখন তুই এমন কোনো অপারেশন করার চেষ্টা করিস, যেটা সেই টাইপের ডাটার জন্য প্রযোজ্য নয়। ধর, তুই একটা সংখ্যার ওপর কোনো স্ট্রিং অপারেশন করতে চাইছিস। যেমন, toUpperCase() মেথডটা স্ট্রিংয়ের জন্য, কিন্তু তুই এটা সংখ্যার ওপর ব্যবহার করলে TypeError দিবে।
const num = 5;
num.toUpperCase();
Uncaught TypeError: num.toUpperCase is not a functionনিচের user ভেরিয়েবল কোনো অবজেক্ট না। এইটা একটা স্ট্রিং টাইপ ভেরিয়েবল। এখন স্ট্রিং টাইপ ইউজ না করে অবজেক্টের মতো করে ইউজ করতে গেলে এক টাইপের মানকে অন্য টাইপের মানের মতো করে ইউজ করার অপচেষ্টার কারণে টাইপ এরর দিবে।
const user = 'sagor';
console.log(user.address.postOffice)
Uncaught TypeError: Cannot read properties of undefined (reading 'postOffice')নিচে getBonus একটা ভেরিয়েবল এবং সংখ্যা টাইপের ভেরিয়েবল। এখন এইটাকে যদি কেউ ফাংশনের মতো করে ইউজ করতে চায়, তাহলে তো হবে না। কারণ, number-কে ফাংশনের মতো করে ইউজ করা যাবে না। করতে গেলে সে টাইপ error দিবে।
const getBonus = 23;
getBonus();অর্থাৎ যে টাইপের মান, তাকে সেই টাইপের মতো করে ইউজ না করে অন্য টাইপের মতো ইউজ করতে গেলে Type Error দিবে।
Reference Error
Reference Error তখন ঘটে, যখন তুই এমন কোনো ভ্যারিয়েবল ব্যবহার করিস, যেটা ডিক্লেয়ার করা হয়নি। যেমন, b ভ্যারিয়েবলটি ডিক্লেয়ার না করে ইউজ করতে গেলে রেফারেন্স এরর দিবে। রেফারেন্স এরর মানে এই নামে কিছু খুঁজে পাচ্ছি না।
const a = 10;
console.log(b);
ReferenceError: b is not definedলজিক্যাল ত্রুটি (Logical Error)
লজিক্যাল ত্রুটি হচ্ছে এমন একটি ত্রুটি, যা প্রোগ্রামকে ভুল আউটপুট দেয়, কিন্তু প্রোগ্রাম চলতে থাকে। এই ধরনের ত্রুটি কোডে কোন ভুল কাজ করছে, তা বোঝা কঠিন। কারণ, এগুলো সাধারণত এরর দেয় না; বরং ভুল আউটপুট দেয়।
যেমন, নিচের কোডে যোগ করার কথা। সেটার জন্য প্লাস চিহ্ন (+) ইউজ না করে কেউ ভুল করে মাইনাস চিহ্ন দিয়ে ফেলছে। এখন কোড এরর দিবে না। আউটপুট ভুল দিবে।
const num1 = 10;
const num2 = 5;
const sum = num1 - num2;
console.log("Sum is: " + sum); এখানে ভুল লজিক প্রয়োগ করা হয়েছে, যা লজিক্যাল ত্রুটি হিসেবে কাজ করবে।
RangeError
RangeError ঘটে তখন, যখন কোনো সংখ্যা তার valid range-এর বাইরে যায়। যেমন, .toFixed() মেথড 0 থেকে 100 পর্যন্ত value নেয়, কিন্তু তুই 101 দিলে সে এইটা ইউজ করতে পারবে না, তখন RangeError দিবে।
const num = 1;
num.toFixed(101);
RangeError: toFixed() digits argument must be between 0 and 100Practice:
- যদি কোন লাইন শেষে সেমিকোলন না দিস তাহলে কি এরর দিবে?
- Reference Error কখন দিবে?।
- Syntax Error আর Type Error এর ডিফারেন্স কি?