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)?
- 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?
- Błąd wykonania - EvalError
Jaki wyjątek może zostać rzucony w przypadku błędu wykonania kodu?
- Błąd zakresu - RangeError
Jaki wyjątek jest rzucany, jeżeli liczba przekracza dozwolony zakres?
- Błąd odniesienia - ReferenceError
Jaki wyjątek jest rzucany przy niewłaściwym odwołaniu do wartości?
- Błąd składni - SyntaxError
Jaki wyjątek jest rzucany w przypadku błędu składni kodu?
- Błąd typu - TypeError
Jaki wyjątek jest rzucany, gdy typ wartości jest niezgodny z oczekiwanym?
- Błąd URI/URL - URIError
Jaki wyjątek jest rzucany przy błędzie obsługi adresu URI/URL?
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"