মনে হচ্ছে আমি একদম দেরী করেছি :) তবে আলোচনাটি বেশ আকর্ষণীয় তাই এখানে চলেছে ... ধরে নেওয়া যায় আপনি একটি ত্রুটি হ্যান্ডলার তৈরি করতে চান এবং আপনি নিজের ব্যতিক্রম হ্যান্ডলার শ্রেণীর মতো ব্যবহার করছেন:
function errorHandler(error){
this.errorMessage = error;
}
errorHandler.prototype. displayErrors = function(){
throw new Error(this.errorMessage);
}
এবং আপনি আপনার কোডটি এভাবে মুড়িয়ে রাখছেন:
try{
if(condition){
//whatever...
}else{
throw new errorHandler('Some Error Message');
}
}catch(e){
e.displayErrors();
}
খুব সম্ভবত আপনার একটি পৃথক .js ফাইলে ত্রুটি হ্যান্ডলারটি থাকবে।
আপনি লক্ষ্য করবেন যে ফায়ারফক্স বা ক্রোমের ত্রুটিতে কোড লাইন নম্বর (এবং ফাইলের নাম) কনসোলে দেখানো হয়েছে এমন লাইন (ফাইল) যা 'ত্রুটি' ব্যতিক্রম ছুঁড়ে ফেলেছে এবং 'ত্রুটিহ্যান্ডলার' ব্যতিক্রম নয় যা আপনি সত্যিকার অর্থে ডিবাগিং করতে চান সহজ। আপনার নিজস্ব ব্যতিক্রম ছুঁড়ে ফেলা দুর্দান্ত তবে বড় প্রকল্পগুলিতে তাদের সনাক্তকরণ একটি সমস্যা হতে পারে, বিশেষত যদি তাদের অনুরূপ বার্তা থাকে। সুতরাং, আপনি যা করতে পারেন তা হ'ল আপনার ত্রুটি হ্যান্ডলারের একটি খালি ত্রুটিযুক্ত বস্তুর একটি রেফারেন্স পাস করা এবং সেই উল্লেখটি আপনার কাছে থাকা সমস্ত তথ্য ধারণ করবে (উদাহরণস্বরূপ ফায়ারফক্সে আপনি ফাইলের নাম এবং লাইন নম্বর ইত্যাদি পেতে পারেন .. ; ক্রোমে আপনি ত্রুটির উদাহরণের 'স্ট্যাক' সম্পত্তিটি পড়লে অনুরূপ কিছু পান)। দীর্ঘ গল্প সংক্ষিপ্ত, আপনি এই জাতীয় কিছু করতে পারেন:
function errorHandler(error, errorInstance){
this.errorMessage = error;
this. errorInstance = errorInstance;
}
errorHandler.prototype. displayErrors = function(){
//add the empty error trace to your message
this.errorMessage += ' stack trace: '+ this. errorInstance.stack;
throw new Error(this.errorMessage);
}
try{
if(condition){
//whatever...
}else{
throw new errorHandler('Some Error Message', new Error());
}
}catch(e){
e.displayErrors();
}
এখন আপনি আসল ফাইল এবং লাইন নম্বর পেতে পারেন যা আপনাকে কাস্টম ব্যতিক্রম ছুঁড়ে ফেলেছে।