Bagaimana Anda menerapkan jenis kesalahan yang berbeda, sehingga Anda dapat menangkap kesalahan tertentu dan membiarkan orang lain muncul ..?
Salah satu cara untuk mencapai ini adalah dengan memodifikasi prototipe Error
objek:
Error.prototype.sender = "";
function throwSpecificError()
{
var e = new Error();
e.sender = "specific";
throw e;
}
Tangkap kesalahan khusus:
try
{
throwSpecificError();
}
catch (e)
{
if (e.sender !== "specific") throw e;
// handle specific error
}
Apakah kalian punya alternatif lain?
javascript
error-handling
cllpse.dll
sumber
sumber
Error
bermasalah. Lihat stackoverflow.com/questions/1382107/…} catch (e) { if (e.name == 'SpecificError') { // specific error } else { throw e; // let others bubble up } }
adalah bahwa itu tidak akan berfungsi di IE7, meningkatkan kesalahan "Pengecualian dilempar dan tidak tertangkap". Berikut ini adalah penjelasan yang sangat bodoh (seperti biasa) dari msdn: "Anda menyertakan pernyataan lemparan, tetapi tidak disertakan dalam blok percobaan, atau tidak ada blok tangkap terkait untuk menjebak kesalahan. Pengecualian dilemparkan dari dalam blok percobaan menggunakan pernyataan lemparan, dan tertangkap di luar blok percobaan dengan pernyataan menangkap. "instanceOf
. Cek di sininame
properti fungsi konstruktor. Saya menyarankan untuk melempar objek yang dibuat khusus denganname
properti, yang tidak akan merusak ...Seperti disebutkan dalam komentar di bawah ini, ini khusus untuk Mozilla, tetapi Anda dapat menggunakan blok 'tangkap bersyarat'. misalnya:
Ini memberikan sesuatu yang lebih mirip dengan penanganan pengecualian yang diketik yang digunakan di Java, setidaknya secara sintaksis.
sumber
This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.
try-catch-finally.js
Menggunakan try-catch-last.js , Anda dapat memanggil
_try
fungsi tersebut dengan callback anonim, yang akan dipanggil, dan Anda dapat.catch
menghubungkan panggilan untuk menangkap kesalahan tertentu, dan.finally
panggilan untuk dijalankan dengan cara apa pun.Contoh
Contoh dengan fungsi panah modern dan literal template
sumber
Modul untuk penggunaan ekspor
Impor ke dalam skrip:
Menggunakan:
Kode panggilan eksternal:
sumber
Saya tidak menyukai salah satu solusi ini, jadi saya membuatnya sendiri. Try-catch-last.js cukup keren kecuali jika Anda lupa satu garis bawah kecil (_) sebelum mencoba maka kode akan tetap berjalan dengan baik, tetapi tidak akan pernah tertangkap! Yuck.
CatchFilter
Saya menambahkan CatchFilter di kode saya:
Sekarang saya bisa memfilter
Sekarang saya bisa memfilter seperti di C # atau Java:
sumber
sumber