Przejdź do treści

Obsługa błędów w JavaScript - Error

W jaki sposób obsługiwać błędy w języku JavaScript?

Utworzenie obiektu błędu - Error

Jak utworzyć obiekt błędu (wyjątek)?

Error()
Error(message)
Parametry:
String message - komunikat błędu (domyślnie: "")
Wartość:
Error - nowa instancja obiektu błędu

Działa identycznie jak konstrukcja new Error(...).

Tworzenie nowego błędu - new Error

Jak utworzyć nową instancję obiektu błędu (wyjątek)? Jak obsłużyć w programie swój własny rodzaj błędu?

new Error

new Error()
new Error(message)
Parametry:
String message - komunikat błędu (domyślnie: "")
Wartość:
Error - nowa instancja obiektu błędu

Tworzy nową instancję obiektu błędu. Zwykle wykorzystuje się ją do rzucania wyjątków.

Utworzenie własnej klasy wyjątku

Jeżeli chcesz, aby Twój program obsługiwał dodatkowe błędy, zdefiniuj własną klasę wyjątku, która dziedziczy po wbudowanej klasie Error:

var TestError = function (message) {
    var that = Error.call(this, message);
    that.name = TestError.prototype.name;
    return that;
};
TestError.prototype = Object.create(Error.prototype);
TestError.prototype.constructor = TestError;
TestError.prototype.name = "TestError";
 
try {
    throw new TestError("Houston, mamy problem.");
} catch (e) {
    e.toString(); // "TestError: Houston, mamy problem."
}

Błąd wykonania - EvalError

Jaki wyjątek może zostać rzucony w przypadku błędu wykonania kodu?

EvalError

EvalError()
new EvalError()
EvalError(message)
new EvalError(message)
Parametry:
String message - komunikat błędu (domyślnie: "")
Wartość:
EvalError - nowa instancja obiektu błędu

Ta klasa dziedziczy po Error.

EvalError.prototype.name

EvalError.prototype.name
Wartość:
String - "EvalError"

Przykład EvalError

EvalError.prototype.name;     // "EvalError"
EvalError("test").toString(); // "EvalError: test"
new EvalError("test") + "";   // "EvalError: test"

Błąd zakresu - RangeError

Jaki wyjątek jest rzucany, jeżeli liczba przekracza dozwolony zakres?

RangeError

RangeError()
new RangeError()
RangeError(message)
new RangeError(message)
Parametry:
String message - komunikat błędu (domyślnie: "")
Wartość:
RangeError - nowa instancja obiektu błędu

Ta klasa dziedziczy po Error. Wskazuje, że liczba przekracza dozwolony zakres.

Błąd RangeError może zostać rzucony w postaci wyjątku z funkcji: Array, new Array, new Array.length, Number.prototype.toString, Number.prototype.toFixed, Number.prototype.toExponential, Number.prototype.toPrecision, Date.prototype.toISOString.

EvalError.prototype.name

RangeError.prototype.name
Wartość:
String - "RangeError"

Przykład RangeError

RangeError.prototype.name;     // "RangeError"
RangeError("test").toString(); // "RangeError: test"
new RangeError("test") + "";   // "RangeError: test"

Błąd odniesienia - ReferenceError

Jaki wyjątek jest rzucany przy niewłaściwym odwołaniu do wartości?

ReferenceError

ReferenceError()
new ReferenceError()
ReferenceError(message)
new ReferenceError(message)
Parametry:
String message - komunikat błędu (domyślnie: "")
Wartość:
ReferenceError - nowa instancja obiektu błędu

Ta klasa dziedziczy po Error. Wskazuje, że nastąpiło niewłaściwe odwołanie do wartości.

ReferenceError.prototype.name

ReferenceError.prototype.name
Wartość:
String - "ReferenceError"

Przykład ReferenceError

ReferenceError.prototype.name;     // "ReferenceError"
ReferenceError("test").toString(); // "ReferenceError: test"
new ReferenceError("test") + "";   // "ReferenceError: test"

Błąd składni - SyntaxError

Jaki wyjątek jest rzucany w przypadku błędu składni kodu?

SyntaxError

SyntaxError()
new SyntaxError()
SyntaxError(message)
new SyntaxError(message)
Parametry:
String message - komunikat błędu (domyślnie: "")
Wartość:
SyntaxError - nowa instancja obiektu błędu

Ta klasa dziedziczy po Error. Wskazuje, że wystąpił błąd parsowania kodu.

Błąd SyntaxError może zostać rzucony w postaci wyjątku z funkcji: eval, new Function, RegExp, new RegExp, JSON.parse.

SyntaxError.prototype.name

SyntaxError.prototype.name
Wartość:
String - "SyntaxError"

Przykład SyntaxError

SyntaxError.prototype.name;     // "SyntaxError"
SyntaxError("test").toString(); // "SyntaxError: test"
new SyntaxError("test") + "";   // "SyntaxError: test"

Błąd typu - TypeError

Jaki wyjątek jest rzucany, gdy typ wartości jest niezgodny z oczekiwanym?

TypeError

TypeError()
new TypeError()
TypeError(message)
new TypeError(message)
Parametry:
String message - komunikat błędu (domyślnie: "")
Wartość:
TypeError - nowa instancja obiektu błędu

Ta klasa dziedziczy po Error. Wskazuje, że typ wartości jest niezgodny z oczekiwanym.

Błąd TypeError może zostać rzucony w postaci wyjątku z funkcji:
Object.getPrototypeOf, Object.getOwnPropertyDescriptor, Object.getOwnPropertyNames, Object.create, Object.defineProperty, Object.defineProperties, Object.seal, Object.freeze, Object.preventExtensions, Object.isSealed, Object.isFrozen, Object.isExtensible, Object.keys,
Object.prototype.toLocaleString,
Function.prototype.toString, Function.prototype.apply, Function.prototype.call, Function.prototype.bind,
Array.prototype.toLocaleString, Array.prototype.every, Array.prototype.some, Array.prototype.forEach, Array.prototype.map, Array.prototype.filter, Array.prototype.reduce,
String.prototype.toString, String.prototype.valueOf,
Boolean.prototype.toString,
Number, new Number,
Number.prototype.toString, Number.prototype.valueOf,
Date.prototype.toString, Date.prototype.toDateString, Date.prototype.toTimeString, Date.prototype.toLocaleString, Date.prototype.toLocaleDateString, Date.prototype.toLocaleTimeString, Date.prototype.valueOf, Date.prototype.getTime, Date.prototype.getFullYear, Date.prototype.getUTCFullYear, Date.prototype.getMonth, Date.prototype.getUTCMonth, Date.prototype.getDate, Date.prototype.getUTCDate, Date.prototype.getDay, Date.prototype.getUTCDay, Date.prototype.getHours, Date.prototype.getUTCHours, Date.prototype.getMinutes, Date.prototype.getUTCMinutes, Date.prototype.getSeconds, Date.prototype.getUTCSeconds, Date.prototype.getMilliseconds, Date.prototype.getUTCMilliseconds, Date.prototype.getTimezoneOffset, Date.prototype.setTime, Date.prototype.setMilliseconds, Date.prototype.setUTCMilliseconds, Date.prototype.setSeconds, Date.prototype.setUTCSeconds, Date.prototype.setMinutes, Date.prototype.setUTCMinutes, Date.prototype.setHours, Date.prototype.setUTCHours, Date.prototype.setDate, Date.prototype.setUTCDate, Date.prototype.setMonth, Date.prototype.setUTCMonth, Date.prototype.setFullYear, Date.prototype.setUTCFullYear, Date.prototype.toUTCString, Date.prototype.toISOString, Date.prototype.toJSON,
new RegExp, RegExp,
JSON.stringify.

TypeError.prototype.name

TypeError.prototype.name
Wartość:
String - "TypeError"

Przykład TypeError

TypeError.prototype.name;     // "TypeError"
TypeError("test").toString(); // "TypeError: test"
new TypeError("test") + "";   // "TypeError: test"

Błąd URI/URL - URIError

Jaki wyjątek jest rzucany przy błędzie obsługi adresu URI/URL?

URIError

URIError()
new URIError()
URIError(message)
new URIError(message)
Parametry:
String message - komunikat błędu (domyślnie: "")
Wartość:
URIError - nowa instancja obiektu błędu

Ta klasa dziedziczy po Error. Wskazuje, że funkcja obsługi adresu URI została użyta niezgodnie z jej definicją.

Błąd URIError może zostać rzucony w postaci wyjątku z funkcji: decodeURI, decodeURIComponent, encodeURI, encodeURIComponent.

URIError.prototype.name

URIError.prototype.name
Wartość:
String - "URIError"

Przykład URIError

URIError.prototype.name;     // "URIError"
URIError("test").toString(); // "URIError: test"
new URIError("test") + "";   // "URIError: test"
Facebook