W tym samouczku, przy pomocy przykładów, dowiesz się o instrukcjach try… catch… last do obsługi wyjątków w JavaScript.
Te try
, catch
a finally
bloki są używane do obsługi wyjątków (rodzaj błędu). Zanim się o nich dowiesz, musisz wiedzieć o rodzajach błędów w programowaniu.
Rodzaje błędów
Podczas programowania w kodzie mogą występować dwa rodzaje błędów:
Błąd składni : błąd w składni. Na przykład, jeśli piszesz consol.log('your result');
, powyższy program zgłasza błąd składniowy. W console
powyższym kodzie pisownia jest błędna.
Błąd wykonania : ten typ błędu występuje podczas wykonywania programu. Na przykład
wywołanie nieprawidłowej funkcji lub zmiennej.
Te błędy występujące w czasie wykonywania nazywane są wyjątkami . Zobaczmy teraz, jak sobie poradzisz z tymi wyjątkami.
JavaScript try… catch Statement
try… catch
Oświadczenie jest używany do obsługi wyjątków. Jego składnia to:
try ( // body of try ) catch(error) ( // body of catch )
Główny kod znajduje się wewnątrz try
bloku. Podczas wykonywania try
bloku, jeśli wystąpi jakikolwiek błąd, przechodzi do catch
bloku. catch
Blok obsługuje błędy jak na sprawozdaniach dotyczących połowów.
Jeśli nie wystąpi błąd, wykonywany jest kod wewnątrz try
bloku, a catch
blok jest pomijany.
Przykład 1: Wyświetl niezadeklarowaną zmienną
// program to show try… catch in a program const numerator= 100, denominator = 'a'; try ( console.log(numerator/denominator); // forgot to define variable a console.log(a); ) catch(error) ( console.log('An error caught'); console.log('Error message: ' + error); )
Wynik
NaN Wystąpił błąd Komunikat o błędzie: ReferenceError: a nie jest zdefiniowany
W powyższym programie zmienna nie jest zdefiniowana. Podczas próby wydrukowania zmiennej a program zgłasza błąd. Ten błąd jest wychwycony w catch
bloku.
JavaScript spróbuj… złap… wreszcie Oświadczenie
Możesz również użyć try… catch… finally
instrukcji do obsługi wyjątków. finally
Blok wykonuje zarówno gdy kod przebiega pomyślnie lub jeśli wystąpi błąd.
Składnia try… catch… finally
bloku to:
try ( // try_statements ) catch(error) ( // catch_statements ) finally() ( // codes that gets executed anyway )
Przykład 2: spróbuj… złap… wreszcie Przykład
const numerator= 100, denominator = 'a'; try ( console.log(numerator/denominator); console.log(a); ) catch(error) ( console.log('An error caught'); console.log('Error message: ' + error); ) finally ( console.log('Finally will execute every time'); )
Wynik
NaN Przechwycony błąd Komunikat o błędzie: Błąd odniesienia: a nie jest zdefiniowany W końcu zostanie wykonany za każdym razem
W powyższym programie występuje błąd i ten błąd jest przechwytywany przez catch
blok. finally
Blok wykona w każdej sytuacji (jeśli program działa skutecznie lub jeśli wystąpi błąd).
Uwaga : musisz użyć catch
lub finally
oświadczenia po try
oświadczeniu. W przeciwnym razie program zgłosi błąd Uncaught SyntaxError: Missing catch lub ostatecznie po try.
JavaScript spróbuj… złap w setTimeout
try… catch
Nie złapie wyjątek, jeśli stało się to w „ czasowe ” kod, jak w setTimeout (). Na przykład,
try ( setTimeout(function() ( // error in the code ), 3000); ) catch (e) ( console.log( "won't work" ); )
Powyższe try… catch
nie zadziała, ponieważ silnik już opuścił try… catch
konstrukcję i funkcja jest wykonywana później.
try… catch
Blok musi być wewnątrz tej funkcji do połowu wyjątek wewnątrz funkcji czasowej. Na przykład,
setTimeout(function() ( try ( // error in the code ) catch ( console.log( "error is caught" ); ) ), 3000);
Możesz również użyć throw
instrukcji z try… catch
instrukcją, aby użyć wyjątków zdefiniowanych przez użytkownika. Na przykład pewna liczba jest dzielona przez 0 . Jeśli chcesz uznać Infinity
za błąd w programie, możesz zgłosić wyjątek zdefiniowany przez użytkownika, używając throw
instrukcji do obsługi tego warunku.
Dowiesz się o instrukcji throw JavaScript w następnym samouczku.