Sepertinya saya agak terlambat :), tetapi pembahasannya cukup menarik jadi .. ini dia ... Dengan asumsi Anda ingin membuat penangan kesalahan, dan Anda menggunakan kelas penangan pengecualian Anda sendiri seperti:
function errorHandler(error){
this.errorMessage = error;
}
errorHandler.prototype. displayErrors = function(){
throw new Error(this.errorMessage);
}
Dan Anda membungkus kode Anda seperti ini:
try{
if(condition){
//whatever...
}else{
throw new errorHandler('Some Error Message');
}
}catch(e){
e.displayErrors();
}
Kemungkinan besar Anda akan memiliki penangan kesalahan dalam file .js terpisah.
Anda akan melihat bahwa di firefox atau konsol kesalahan chrome, nomor baris kode (dan nama file) yang ditampilkan adalah baris (file) yang menampilkan pengecualian 'Kesalahan' dan bukan pengecualian 'errorHandler' yang benar-benar Anda inginkan untuk melakukan debugging mudah. Melempar pengecualian Anda sendiri itu bagus, tetapi pada proyek besar menemukannya bisa menjadi masalah, terutama jika mereka memiliki pesan yang serupa. Jadi, yang dapat Anda lakukan adalah meneruskan referensi ke objek Error kosong yang sebenarnya ke penangan kesalahan Anda, dan referensi tersebut akan menyimpan semua informasi yang Anda inginkan (misalnya di firefox Anda bisa mendapatkan nama file, dan nomor baris, dll. ; di chrome Anda mendapatkan sesuatu yang serupa jika Anda membaca properti 'stack' dari instance Error). Singkat cerita, Anda bisa melakukan sesuatu seperti ini:
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();
}
Sekarang Anda bisa mendapatkan file aktual dan nomor baris yang memberikan pengecualian khusus kepada Anda.