To tłumaczenie jest niekompletne. Pomóż przetłumaczyć ten artykuł z języka angielskiego.

Kontruktor klasy Error tworzy obiekt błędu. Instancja klasy Error jest rzucana w momencie napotkania błędu w trakcie wykonywania programu. Klasa Error może być także używana do tworzenia własnych wyjątków. Poniżej przestawione zostaną wbudowane standardowe typy błędów.

Składnia

new Error([message[, fileName[, lineNumber]]])

Parametry

message
Opcjonalny. Opis błędu zrozumiały dla użytkownika.
fileName
Opcjonalny. Wartość dla parametru fileName przy tworzeniu obiektu Error. Domyślnie to nazwa pliku zawierającego kod, który wywołał konstruktor.
lineNumber
Opcjonalny. Wartość dla paramteru lineNumber przy tworzeniu obiektu Error. Domyślnie zawiera numer linijki zawirającej wywołanie konstruktora klasy Error.

Opis

Błędy w trakcie wykonywania programu skutkują utworzeniem i rzuceniem nowego obiektu Error.

This page documents the use of the Error object itself and its use as a constructor function. For a list of properties and methods inherited by Error instances, see Error.prototype.

 

Used as a function

Gdy Error jest używany jako funkcja -- bez słowa kluczowego new, zwraca on obiekt Error. Możemy więc zauważyć, że zwykłe wywołanie Error zwróci nam to samo co stworznie nowego obiektu Error przy pomocy słowa kluczowego new.

// to:
const x = Error('Jestem stworzony przy pomocy wyowałania funkcji!');
​​​​// ma te samą funkcję jak to:
const y = new Error('Jestem stworzony przy pomocy słowa kluczowego "new"!');

 

Typy błędów

Oprócz konstruktora generycznego Error, mamy jeszcze siedem innych podstawowych konstruktorów błędów w JavaScript. Dla wyjątów po stronie klienta zobacz Exception Handling Statements.

EvalError
Tworzy instancje reprezentującą błąd dotyczący globalnej funkcji eval().
InternalError
Tworzy instancje reprezentującą błąd, który występuje w momencie wyrzucenia wewnętrznego błędu silnika JavaScript np. "too much recursion".
RangeError
Tworzy instancje reprezentującą błąd, który występuje w momencie gdy zmienna numeryczna lub parametr wyjdzie poza zakres. 
ReferenceError
Tworzy instancje reprezentującą błąd, który występuje przy próbie odwołania do nieistniejącego zasobu.
SyntaxError
Tworzy instancje reprezentującą błąd składni, który występuje przy parsowaniu kodu przy pomocy eval().
TypeError
Tworzy instancję reprezentującą błąd, który występuje gdy zmienna lub parametr mają niepoprawny typ.
URIError
Tworzy instancję reprezentującą błąd, który występuje gdy encodeURI() i decodeURI() mają przekazane nieprawidłowe parametry.

Właściwości

Error.prototype
Pozwala na dodawanie właściwości do instancji klasy Error.

Metody

Globalny obiekt Error sam w sobie nie zawiera metod, niemniej, dziedziczy on niektóre metody z łańcucha prototypów.

Error instancje

Właściwości

Metody

Przykłady

Rzucanie ogólnego błędu

Zazwyczaj tworzysz obiekt Error w celu wywołania go przy użyciu słowa kluczowego throw. Możesz obsłużyć tak rzucony błąd przy pomocy konstrukcji try...catch:

try {
  throw new Error('Whoops!');
} catch (e) {
  alert(e.name + ': ' + e.message);
}

Obsługa specyficznych błędów

Jeżeli chcesz możesz obsługiwać tylko specyficzny rodzaj błędu poprzez użycie właściwości jego constructor lub, jeżeli używasz nowoczesnego silnika JavaScript, poprzez słowo kluczowe instanceof:

try {
  foo.bar();
} catch (e) {
  if (e instanceof EvalError) {
    alert(e.name + ': ' + e.message);
  } else if (e instanceof RangeError) {
    alert(e.name + ': ' + e.message);
  }
  // ... etc
}

Niestandardowe typy błędów

Możesz chcieć zdefiniować własny typ błędu pochodzący z klasy Error z możliwością rzucenia błędu throw new MyError() i użycia instanceof MyError w celu sprawdzenia jego rodzaju. Skutkuje to czystszym i spójniejszym kodem obsługi błędów. Zobacz "What's a good way to extend Error in JavaScript?" na StackOverflow dla dogłębniejszej analizy.

ES6 Custom Error Class

Babel i inne transpilatory nie potrafią poprawnie obsłużyć podanego kodu bez dodatkowej konfiguracji.

Some browsers include the CustomError constructor in the stack trace when using ES2015 classes.

class CustomError extends Error {
  constructor(foo = 'bar', ...params) {
    // Pass remaining arguments (including vendor specific ones) to parent constructor
    super(...params);

    // Maintains proper stack trace for where our error was thrown (only available on V8)
    if (Error.captureStackTrace) {
      Error.captureStackTrace(this, CustomError);
    }

    // Custom debugging information
    this.foo = foo;
    this.date = new Date();
  }
}

try {
  throw new CustomError('baz', 'bazMessage');
} catch(e){
  console.log(e.foo); //baz
  console.log(e.message); //bazMessage
  console.log(e.stack); //stacktrace
}

ES5 Custom Error Object

All browsers include the CustomError constructor in the stack trace when using a prototypal declaration.

function CustomError(foo, message, fileName, lineNumber) {
  var instance = new Error(message, fileName, lineNumber);
  instance.foo = foo;
  Object.setPrototypeOf(instance, Object.getPrototypeOf(this));
  if (Error.captureStackTrace) {
    Error.captureStackTrace(instance, CustomError);
  }
  return instance;
}

CustomError.prototype = Object.create(Error.prototype, {
  constructor: {
    value: Error,
    enumerable: false,
    writable: true,
    configurable: true
  }
});

if (Object.setPrototypeOf){
  Object.setPrototypeOf(CustomError, Error);
} else {
  CustomError.__proto__ = Error;
}


try {
  throw new CustomError('baz', 'bazMessage');
} catch(e){
  console.log(e.foo); //baz
  console.log(e.message) ;//bazMessage
}

Specyfikacja

Specification Status Comment
ECMAScript 1st Edition (ECMA-262) Standard Początkowa definicja. Zaimplementowana w JavaScript 1.1.
ECMAScript 5.1 (ECMA-262)
The definition of 'Error' in that specification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Error' in that specification.
Standard  
ECMAScript Latest Draft (ECMA-262)
The definition of 'Error' in that specification.
Draft  

Kompatybilność

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support Yes Yes16 Yes Yes
prototype Yes Yes16 Yes Yes
columnNumber No No1 No No No
fileName No No1 No No No
lineNumber No No1 No No No
message Yes Yes16 Yes Yes
name Yes Yes16 Yes Yes
stack Yes Yes110 Yes6
toSource No No1 No No No
toString Yes Yes16 Yes Yes
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support Yes Yes Yes4 Yes Yes Yes
prototype Yes Yes Yes4 Yes Yes Yes
columnNumber No No No4 No No No
fileName No No No4 No No No
lineNumber No No No4 No No No
message Yes Yes Yes4 Yes Yes Yes
name Yes Yes Yes4 Yes Yes Yes
stack Yes Yes Yes4 Yes6 Yes
toSource No No No4 No No No
toString Yes Yes Yes4 Yes Yes Yes

Zobacz także

Autorzy i etykiety dokumentu

Autorzy tej strony: mitelak, fscholz
Ostatnia aktualizacja: mitelak,