I'm menggunakan Ketangkasan untuk yang cukup besar proyek, dan saya bertanya-tanya apa standar untuk penggunaan `Kesalahan ini. Sebagai contoh, katakanlah saya tangan index out of bounds exception dalam Java:
throw new IndexOutOfBoundsException();
Akan setara dengan pernyataan dalam Naskah menjadi:
throw new Error("Index Out of Bounds");
Cara lain apa yang saya bisa mencapai hal ini? Apa standar yang diterima?
Seseorang memposting link ini ke MDN di komentar, dan saya pikir itu sangat membantu. Ini menggambarkan hal-hal seperti ErrorTypes sangat teliti.
EvalError --- Menciptakan contoh yang mewakili sebuah kesalahan yang terjadi mengenai global fungsi eval().
InternalError --- Menciptakan contoh yang mewakili sebuah kesalahan yang terjadi ketika sebuah kesalahan internal dalam JavaScript engine yang dilemparkan. E. g. "terlalu banyak rekursi".
RangeError --- Menciptakan contoh yang mewakili kesalahan yang terjadi ketika sebuah variabel numerik atau parameter di luar valid berbagai.
ReferenceError --- Menciptakan contoh yang mewakili kesalahan yang terjadi ketika de-referensi referensi yang valid.
SyntaxError --- Menciptakan contoh yang mewakili kesalahan sintaks yang terjadi saat parsing kode eval().
TypeError --- Menciptakan contoh yang mewakili kesalahan yang terjadi ketika sebuah variabel atau parameter tidak valid jenis.
URIError --- Menciptakan contoh yang mewakili kesalahan yang terjadi ketika encodeURI() atau decodeURI() dilewatkan parameter tidak valid.
Konvensi untuk keluar dari jangkauan di JavaScript adalah dengan menggunakan RangeError
. Untuk memeriksa jenis menggunakan if / else + instanceof
mulai dari yang paling spesifik yang paling generik
try {
throw new RangeError();
}
catch (e){
if(e instanceof RangeError){
console.log('out of range');
}
}
Solusi sederhana untuk memancarkan dan menampilkan pesan dengan Pengecualian.
try {
throw new TypeError("Error message");
}
catch (e){
console.log((<Error>e).message);//conversion to Error type
}
Di atas adalah bukan solusi jika kita don't tahu apa jenis kesalahan yang dapat dipancarkan dari blok. Dalam kasus seperti jenis penjaga harus digunakan dan penanganan yang tepat untuk tepat kesalahan harus dilakukan - lihat di @Moriarty menjawab.
Don't lupa tentang pernyataan switch:
default
.instanceof
dapat cocok pada superclass.pembina
akan cocok tepat di kelas.function handleError() {
try {
throw new RangeError();
}
catch (e) {
switch (e.constructor) {
case Error: return console.log('generic');
case RangeError: return console.log('range');
default: return console.log('unknown');
}
}
}
handleError();