JavaScript Error Reference

জাভাস্ক্রিপ্ট এরর অবজেক্ট এবং এর বৈশিষ্ট্য শিখুন

ভুল অর্থ

জাভাস্ক্রিপ্টে একটি অন্তর্নির্মিত ত্রুটি বস্তু রয়েছে যা ত্রুটির তথ্য প্রদান করে যখন একটি ত্রুটি ঘটে।

ত্রুটি বস্তু দুটি দরকারী বৈশিষ্ট্য প্রদান করে: নাম এবং বার্তা।

🔧ত্রুটি বস্তুর সৃষ্টি:

জাভাস্ক্রিপ্ট স্বয়ংক্রিয়ভাবে একটি ত্রুটি বস্তু তৈরি করে, অথবা আপনি নতুন ত্রুটি() দিয়ে একটি নতুন ত্রুটি বস্তু তৈরি করতে পারেন:

// স্বয়ংক্রিয়ভাবে জাভাস্ক্রিপ্ট তৈরি করে চেষ্টা করুন { যাক x = y; // রেফারেন্স ত্রুটি } ধরা(ত্রুটি) { console.log(err.name); // "রেফারেন্স ত্রুটি" console.log(err.message); // "y সংজ্ঞায়িত করা হয় না" } // আপনি তৈরি করতে পারেন কাস্টম এরর = নতুন ত্রুটি ("কাস্টম ত্রুটি বার্তা") দিন; console.log(customError.name); // "ত্রুটি" console.log(customError.message); // "কাস্টম ত্রুটি বার্তা"

ত্রুটি অবজেক্ট বৈশিষ্ট্য

বৈশিষ্ট্য ব্যাখ্যা
name ত্রুটির নাম সেট করে বা ফেরত দেয়
message ত্রুটি বার্তা (একটি স্ট্রিং) সেট বা ফেরত দেয়।

উদাহরণ:

চেষ্টা করুন { // এর একটি রেফারেন্স ত্রুটি উত্থাপন করা যাক let x = undefinedVariable; } ধরা(ত্রুটি) { console.log("ত্রুটির নাম:", error.name); // "রেফারেন্স ত্রুটি" console.log("ত্রুটি বার্তা:", error.message); // "অনির্ধারিত ভেরিয়েবল সংজ্ঞায়িত নয়" console.log("সম্পূর্ণ ত্রুটি:", ত্রুটি); // সম্পূর্ণ ত্রুটি বস্তু }

Error Names

errorName বৈশিষ্ট্য ছয়টি ভিন্ন মান প্রদান করতে পারে:

ত্রুটির নাম ব্যাখ্যা চেষ্টা করতে
EvalError অপ্রচলিত - পরিবর্তে SyntaxError ব্যবহার করুন
RangeError একটি সংখ্যা "পরিসীমার বাইরে" চলে গেছে।
ReferenceError একটি অবৈধ রেফারেন্স ঘটেছে
SyntaxError একটি সিনট্যাক্স ত্রুটি ঘটেছে
TypeError একটি টাইপ ত্রুটি ঘটেছে
URIError encodeURI() এ একটি ত্রুটি ঘটেছে

প্রতিটি ত্রুটি ধরনের উদাহরণ:

RangeError

// ভুল অ্যারের দৈর্ঘ্য চেষ্টা করুন { let arr = নতুন অ্যারে(-1); } ধরা(ত্রুটি) { console.log(err.name); // "রেঞ্জ ত্রুটি" console.log(err.message); // "অবৈধ অ্যারের দৈর্ঘ্য" }

ReferenceError

// অনির্ধারিত পরিবর্তনশীল চেষ্টা করুন { let x = undefinedVariable; } ধরা(ত্রুটি) { console.log(err.name); // "রেফারেন্স ত্রুটি" console.log(err.message); // "অনির্ধারিত ভেরিয়েবল সংজ্ঞায়িত নয়" }

TypeError

// ভুল টাইপ ফাংশন চেষ্টা করুন { যাক num = 5; num.toUpperCase(); } ধরা(ত্রুটি) { console.log(err.name); // "TypeError" console.log(err.message); // "num.toUpperCase একটি ফাংশন নয়" }

URIError

// অবৈধ URI চেষ্টা করুন { decodeURI("%%%"); } ধরা(ত্রুটি) { console.log(err.name); // "ইউআরআইইরর" console.log(err.message); // "ইউআরআই বিকৃত" }

🔍নোট সিনট্যাক্স ত্রুটি:

SyntaxError ব্যতিক্রমগুলি চেষ্টা করে ধরা যাবে না...catch কারণ কোড পার্স হওয়ার আগে সেগুলি ঘটে:

// এটি একটি ত্রুটি নিক্ষেপ করে না - কোডটি কার্যকর হওয়ার আগে ব্যর্থ হয় চেষ্টা করুন { let x = "আবদ্ধ স্ট্রিং; } ধরা(ত্রুটি) { // এই কোড কখনই চলবে না console.log("ধরা:", ভুল); }

কাস্টম ত্রুটি বস্তু

আপনি আপনার নিজস্ব ত্রুটি প্রকার তৈরি করতে পারেন:

// মৌলিক কাস্টম ত্রুটি ক্লাস ValidationError প্রসারিত ত্রুটি { কনস্ট্রাক্টর(বার্তা) { সুপার (বার্তা); this.name = "Validation Error"; this.timestamp = নতুন তারিখ().toISOSstring(); } } // আবেদন চেষ্টা করুন { যাক বয়স = 15; যদি (বয়স <18) { নতুন বৈধতা ত্রুটি নিক্ষেপ ("ব্যবহারকারীর বয়স কমপক্ষে 18 বছর হতে হবে"); } } ধরা(ত্রুটি) { যদি (ValidationError এর ভুল উদাহরণ) { console.log(err.name); // "বৈধকরণ ত্রুটি" console.log(err.message); // "ব্যবহারকারীর বয়স কমপক্ষে 18 বছর হতে হবে" console.log(err.timestamp); // ISO টাইমস্ট্যাম্প } }

আরো কাস্টম ত্রুটি উদাহরণ:

// নেটওয়ার্ক ত্রুটি প্রকার ক্লাস নেটওয়ার্ক ত্রুটি ত্রুটি প্রসারিত করে { কনস্ট্রাক্টর(url, অবস্থা) { super(`${url} আনতে ব্যর্থ: স্থিতি ${status}`); this.name = "নেটওয়ার্ক ত্রুটি"; this.url = url; this.status = অবস্থা; } } // ডেটাবেস ত্রুটি প্রকার ক্লাস DatabaseError ত্রুটি প্রসারিত করে { কনস্ট্রাক্টর (অপারেশন, টেবিল, বিশদ বিবরণ) { super(`ডাটাবেস অপারেশন ব্যর্থ হয়েছে: ${operation} on ${table}`); this.name = "ডেটাবেস ত্রুটি"; this.operation = অপারেশন; this.table = টেবিল; this.details = বিবরণ; } } // আবেদন চেষ্টা করুন { নতুন নেটওয়ার্ক ত্রুটি নিক্ষেপ ("https://api.example.com/data", 404); } ধরা(ত্রুটি) { যদি (NetworkError এর ভুল উদাহরণ) { console.log(${err.url} এর জন্য নেটওয়ার্ক ত্রুটি: ${err.status}`); } }

অ-মানক বৈশিষ্ট্য এবং পদ্ধতি

🚫গুরুত্বপূর্ণ সতর্কতা:

পাবলিক ওয়েবসাইটে এই বৈশিষ্ট্য এবং পদ্ধতি ব্যবহার করবেন না. তারা সব ব্রাউজারে কাজ করে না।

বৈশিষ্ট্য ব্যাখ্যা
arguments মেয়াদ শেষ
caller মেয়াদ শেষ
columnNumber শুধুমাত্র ফায়ারফক্স
description শুধুমাত্র মাইক্রোসফট
displayName শুধুমাত্র ফায়ারফক্স
fileName শুধুমাত্র ফায়ারফক্স
lineNumber শুধুমাত্র ফায়ারফক্স
number শুধুমাত্র মাইক্রোসফট
stack শুধুমাত্র ফায়ারফক্স
পদ্ধতি ব্যাখ্যা
evalError() মেয়াদ শেষ
internalError() শুধুমাত্র ফায়ারফক্স
toSource() অমানক

⚠️আবার সতর্কবাণী:

পাবলিক ওয়েবসাইটে এই বৈশিষ্ট্য ব্যবহার করবেন না. তারা সব ব্রাউজারে কাজ করে না।

🌐ক্রস-ব্রাউজার সামঞ্জস্যতা:

আধুনিক জাভাস্ক্রিপ্টে, স্ট্যাক অ্যাট্রিবিউটটি বেশিরভাগ ব্রাউজার দ্বারা সমর্থিত এবং ডিবাগিংয়ের জন্য দরকারী:

চেষ্টা করুন { যাক x = y; // রেফারেন্স ত্রুটি } ধরা(ত্রুটি) { console.log(err.stack); // সঞ্চয় ট্র্যাক দেখায়: // রেফারেন্স ত্রুটি: y সংজ্ঞায়িত করা হয় না // filename.js:2:9 এ // HTMLButtonElement.onclick(index.html:15:45) এ }

দ্রষ্টব্য:স্ট্যাক অ্যাট্রিবিউট বর্তমানে Chrome, Firefox, Edge এবং Safari-এ সমর্থিত, তবে ব্রাউজারগুলির মধ্যে এর বিন্যাস পরিবর্তিত হতে পারে।

ত্রুটি অবজেক্ট পদ্ধতি

// ত্রুটি বস্তুর একটি toString() পদ্ধতি আছে চেষ্টা করুন { let x = undefinedVariable; } ধরা(ত্রুটি) { console.log(err.toString()); // "রেফারেন্স ত্রুটি: undefinedVariable সংজ্ঞায়িত করা হয় না" console.log(স্ট্রিং(ত্রুটি)); // "রেফারেন্স ত্রুটি: undefinedVariable সংজ্ঞায়িত করা হয় না" console.log(''+ err); // "রেফারেন্স ত্রুটি: undefinedVariable সংজ্ঞায়িত করা হয় না" }

কাস্টম toString() পদ্ধতি:

শ্রেণী CustomError ত্রুটি প্রসারিত করে { কনস্ট্রাক্টর (কোড, বার্তা) { সুপার (বার্তা); this.name = "কাস্টম ত্রুটি"; this.code = কোড; } toString() { ফেরত `${this.name} [${this.code}]: ${this.message}`; } } // আবেদন let err = নতুন CustomError(404, "রিসোর্স পাওয়া যায়নি"); console.log(err.toString()); // "কাস্টম ত্রুটি [404]: সংস্থান পাওয়া যায়নি" console.log(স্ট্রিং(ত্রুটি)); // "কাস্টম ত্রুটি [404]: সংস্থান পাওয়া যায়নি"

ব্যবহারিক প্রয়োগের উদাহরণ

ত্রুটি প্রকারের উপর ভিত্তি করে হ্যান্ডলিং

try {
  riskyOperation();
} catch(err) {
  switch(err.name) {
    case 'TypeError':
      handleTypeError(err);
      break;
    case 'ReferenceError':
      handleReferenceError(err);
      break;
    case 'RangeError':
      handleRangeError(err);
      break;
    default:
      handleUnknownError(err);
  }
}

লগিংয়ে ত্রুটি৷

ফাংশন logError(ত্রুটি) { const errorLog = { টাইমস্ট্যাম্প: নতুন তারিখ().toISOSstring(), নাম: error.name, বার্তা: error.message, স্ট্যাক: error.stack, url: window.location.href, userAgent: navigator.userAgent }; // সার্ভারে পাঠান বা লোকাল স্টোরেজ এ স্টোর করুন console.error('Error logged:', errorLog); রিটার্ন এররলগ; }

ব্যবহারকারী বন্ধুত্বপূর্ণ ত্রুটি বার্তা

function showUserFriendlyError(error) {
  const messages = {
    'TypeError': 'Something went wrong with the data type.',
    'ReferenceError': 'A reference error occurred.',
    'RangeError': 'The value is out of acceptable range.',
    'NetworkError': 'Unable to connect to the server.',
    'default': 'An unexpected error occurred. Please try again.'
  };
  
  return messages[error.name] || messages.default;
}

আরও দেখুন:

JavaScript Errors

বিভিন্ন জাভাস্ক্রিপ্ট ত্রুটির ধরন সম্পর্কে জানুন

JavaScript Silent Errors

নীরব ত্রুটিগুলি সম্পর্কে জানুন যা ব্যতিক্রম নিক্ষেপ করে না

JavaScript Error Statements

চেষ্টা, ধরা, অবশেষে, এবং বিবৃতি নিক্ষেপ সম্পর্কে জানুন

JavaScript Debugging

জাভাস্ক্রিপ্ট ত্রুটিগুলি খুঁজে বের করা এবং ঠিক করার বিষয়ে জানুন৷

জাভাস্ক্রিপ্ট ত্রুটি রেফারেন্স টিউটোরিয়াল

জাভাস্ক্রিপ্ট ত্রুটি বস্তুর আপনার জ্ঞান পরীক্ষা করার জন্য এই অনুশীলন চেষ্টা করুন.

নিম্নলিখিত বৈশিষ্ট্যগুলির মধ্যে কোন দুটি জাভাস্ক্রিপ্ট ত্রুটি বস্তুর স্ট্যান্ডার্ড বৈশিষ্ট্য সমস্ত ব্রাউজার দ্বারা সমর্থিত?

লাইন নম্বর এবং ফাইলের নাম
✗ ভুল! lineNumber এবং fileName হল অ-মানক বৈশিষ্ট্য এবং শুধুমাত্র Firefox-এ সমর্থিত
আর্গুমেন্ট এবং কলার
✗ ভুল! আর্গুমেন্ট এবং কলার অবহেলিত বৈশিষ্ট্য এবং নতুন জাভাস্ক্রিপ্ট সংস্করণে সমর্থিত নয়
নাম এবং বার্তা
✓ ঠিক আছে! নাম এবং বার্তা হল জাভাস্ক্রিপ্ট ত্রুটি বস্তুর দুটি আদর্শ বৈশিষ্ট্য যা সমস্ত ব্রাউজার দ্বারা সমর্থিত। নাম ত্রুটির ধরন নির্দেশ করে, বার্তাটিতে ত্রুটির বিবরণ রয়েছে
স্ট্যাক এবং বিবরণ
✗ ভুল! স্ট্যাক এবং বিবরণ অ-মানক বৈশিষ্ট্য; স্ট্যাক শুধুমাত্র ফায়ারফক্সে সমর্থিত, বর্ণনা শুধুমাত্র Microsoft-এ সমর্থিত