Am'm, folosind mașina de Scris pentru un interval rezonabil de mare proiect, și mă întrebam ce standard este pentru utilizarea de Eroare este. De exemplu, spune-I mână un index out of bounds excepție în Java:
throw new IndexOutOfBoundsException();
Ar echivalentul declarație în Script fi:
throw new Error("Index Out of Bounds");
Ce alte moduri pot realiza acest lucru? Ce este standardul acceptat?
Cineva a postat acest link pentru a MDN într-un comentariu, și cred că a fost de foarte mare ajutor. Acesta descrie lucruri ca ErrorTypes foarte bine.
EvalError --- Creează o instanță reprezintă o eroare care apare în ceea ce privește globală funcția eval().
InternalError --- Creează o instanță reprezintă o eroare care apare atunci când o eroare internă în JavaScript motor este aruncat. E. g. "prea mult recursivitate".
RangeError --- Creează o instanță reprezintă o eroare care apare atunci când o variabilă numerică sau parametru este în afara valabil gama.
ReferenceError --- Creează o instanță reprezintă o eroare care apare atunci când de afiliere-un invalid de referință.
SyntaxError --- Creează o instanță reprezintă o eroare de sintaxă care apare în timp ce parsarea codului în eval().
TypeError --- Creează o instanță reprezintă o eroare care apare atunci când o variabilă sau parametru nu este de un tip valid.
URIError --- Creează o instanță reprezintă o eroare care apare atunci când encodeURI() sau decodeURI() sunt transmise invalid parametri.
Convenția pentru afara intervalului în JavaScript se folosește de RangeError
. Pentru a verifica tipul de utilizare dacă / altceva + instanceof
începând de la cel mai specific la cel mai generic
try {
throw new RangeError();
}
catch (e){
if(e instanceof RangeError){
console.log('out of range');
}
}
Soluție simplă de a emite și arată mesaj de Excepție.
try {
throw new TypeError("Error message");
}
catch (e){
console.log((<Error>e).message);//conversion to Error type
}
Mai sus nu este o soluție, dacă nu ne't știu ce fel de eroare poate fi emis de la bloc. În astfel de cazuri tip gardienii ar trebui să fie utilizate și de manipulare corespunzătoare pentru buna eroare ar trebui să fie făcut - să ia o privire pe @Moriarty răspuns.
Don't uita de a comuta declarații:
instanceof
poate potrivi pe superclasa.constructorul
se va potrivi exact în clasă.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();