জেএসে কোনও ফাংশনে আর্গুমেন্টটি আসলে 'ত্রুটি' টাইপের বা ত্রুটির কোনও উদাহরণের কিনা তা যাচাই করা সম্ভব বলে মনে হয় না।
উদাহরণস্বরূপ, এটি বৈধ নয়:
typeof err === 'error'
যেহেতু কেবলমাত্র 6 টি সম্ভাব্য প্রকার রয়েছে (স্ট্রিং আকারে):
টাইপফোর অপারেটর স্ট্রিং হিসাবে টাইপ তথ্য ফেরত দেয়। এখানে ছয়টি সম্ভাব্য মান রয়েছে যা typeofপ্রত্যাবর্তন করে:
"সংখ্যা", "স্ট্রিং", "বুলিয়ান", "অবজেক্ট", "ফাংশন" এবং "অপরিজ্ঞাত"।
তবে আমার যদি এর মতো সরল ব্যবহারের কেস থাকে:
function errorHandler(err) {
if (typeof err === 'error') {
throw err;
}
else {
console.error('Unexpectedly, no error was passed to error handler. But here is the message:',err);
}
}
সুতরাং কোনও যুক্তি যদি ত্রুটির একটি উদাহরণ হয় তা নির্ধারণের সেরা উপায় কী?
হয় instanceofকোনো সাহায্যের অপারেটর?
errএকটি আইফ্রেমে ফেলে (বলুন), তবে তা হস্তান্তর করার জন্য এটি প্যারেন্ট উইন্ডোতে পৌঁছে দিলে আপনি পাবেন (err instanceof Error) === false। কারণ ইফ্রেমে এবং এর প্যারেন্ট উইন্ডোটির আলাদা, পৃথক Errorঅবজেক্টের প্রোটোটাইপ রয়েছে। তেমনি উইলের মতো কোনও বস্তু obj = {};যখন আলাদা উইন্ডোতে চলমান কোনও ফাংশনটিতে পৌঁছে দেয়, ততক্ষণ (obj instanceof Object)===false। (এমনকি খারাপ, অর্থাৎ, আপনি যদি obj একটি রেফারেন্স রাখতে পর তার জানালা ধ্বংস হয় বা নেভিগেট, মত কল বস্তুর প্রোটোটাইপ FNS বের করার চেষ্টা obj.hasOwnProperty()ত্রুটি নিক্ষেপ করা হবে!)
catch((err)=>{if (err === ENOENT)আয় ENOENT is not definedগোমরাহী ছাড়া?
err instanceof Error