Pomyślałem sobie żeby wypróbować sobie try catch w JS.
Próbowałem coś ogarnąć w wychwalanej tutaj dokumentacji MDN. Niestety, nie udało się.
Wystarczyła minuta lektury na stronie w3schools żeby zrobić prostą funkcję z pobieraniem treści błędu.
Na stronie MDN podawane skrypty wyrzucają treść błędu... ale samego skryptu, który jest kretyńsko przedstawiony:
function getCustInfo(name, id, email)
{
var n, i, e;
if (!validate_name(name))
throw "InvalidNameException"
else
n = name;
if (!validate_id(id))
throw "InvalidIdException"
else
i = id;
if (!validate_email(email))
throw "InvalidEmailException"
else
e = email;
cust = (n + " " + i + " " + e);
return (cust);
}
Sam kod nic nie pokaże, po wywołaniu funkcji, np. getCustInfo ('costam', 1, 'bla@bla.pl' ) rzuci ci tylko błąd Uncaught ReferenceError: validate_name is not defined. Oczywiście można się skumać że trzeba wtedy zdefiniować funkcję validate_name, ale nie ma żadnego funkcjonującego przykladu. Wcześniej pada też coś takiego:
try {
throw "myException" // generuje wyjątek
}
catch (e) {
// instrukcja trzymająca jakikolwiek wyjątek
logMyErrors(e) // przechodzi z obiektu wyjątku exception object to error handler
}
Ja się zastanawiałem czy to logMyErrors nie jest odpowiednikiem getMessage() z php , a tutaj dupa logMyErrors is not defined. Też nie rozumiem co znaczy "przechodzi z obiektu wyjątku exception object to error handler". Mniej doświadczonego łatwo idzie wpędzić w zakłopotanie.
Nie pada tutaj ani razu słówko 'message', dzięki któremu wyłapalibyśmy treść błędu. Są jakieś teoretyczne sofizmaty, ale użytkownik nie zdobędzie funkcjonującego przykładu.
Całe szczęście że jest dokumentacja w3 schools, wówczas mogę wrócić na tą stronę i wtedy zacząć coś ogarniać.
Widzę tutaj psioczenie na w3schools. Sorry, ale to takie złe dowiadywać się jakichś podstaw bez specjalnego samobiczowania?