JavaScript:
Obsługa błędów
Jak to zrobić:
Oto klasyczny blok try-catch
:
try {
// Kod, który może spowodować błąd
let result = potentiallyRiskyOperation();
console.log('Sukces:', result);
} catch (error) {
// Co zrobić, gdy zostanie rzucony błąd
console.error('Ups:', error.message);
}
Przykładowe wyjście, gdy nie wystąpi błąd:
Sukces: 42
A kiedy pojawi się błąd:
Ups: Coś poszło nie tak
Dla kodu asynchronicznego, gdzie używane są promisy, użyj try-catch
w funkcji async
:
async function fetchData() {
try {
let data = await fetch('https://api.example.com/data');
console.log('Dane pobrane:', data);
} catch (error) {
console.error('Błąd pobierania danych:', error.message);
}
}
fetchData();
Wgłębienie się
Obsługa błędów w JavaScript przeszła ewolucję. Dawniej (ES3, około 1999 roku), mieliśmy tylko blok try-catch
. Nie był super elastyczny, ale dawał sobie radę.
ES6 (2015) wprowadziło Promisy i dostarczyło nam .then()
i .catch()
, pozwalając na bardziej eleganckie radzenie sobie z błędami asynchronicznymi.
fetch('https://api.example.com/data')
.then(dane => console.log('Dane pobrane:', dane))
.catch(error => console.error('Błąd pobierania danych:', error.message));
Jeśli chodzi o szczegóły implementacji, kiedy błąd jest rzucany, silniki JavaScript tworzą obiekt Error
z przydatnymi właściwościami takimi jak message
i stack
. Możesz także stworzyć własne typy błędów przez rozszerzenie klasy Error
– przydatne dla bardziej złożonych aplikacji.
Alternatywy? Można ignorować obsługę błędów (zły pomysł), używać funkcji zwrotnych z pierwszym parametrem błędu (witaj, styl Node.js) lub zafascynować się bibliotekami i frameworkami, które oferują własne podejścia.
Zobacz również
Więcej o obsłudze błędów:
- MDN o try-catch: MDN try…catch
- Asynchroniczne oczekiwanie: MDN async function
- Przewodnik po Promisach: MDN Promises
- Tworzenie i rzucanie własnych błędów: MDN Error