80 likes | 188 Views
Javascript les spécificités du langage - Partie 7 -. La gestion d’erreurs par exceptions et par blocs.
E N D
La gestion d’erreurs par exceptions et par blocs Comme nombreux langages, Javascript intègre une gestion d’erreur par blocs « try », « catch », « finally » qui permettent de gérer les exceptions lancées durant le déroulement des scripts.
La gestion d’erreurs par exceptions et par blocs Les exceptions Une exception est un arrêt de programme avec un message particulier afin de connaître la raison pour laquelle il s’est interrompu. En Javascript n’importe quel type d’objet peut être lancée, une exception se déclenche par un « throw » et traverse les fonctions.
throw function(){alert('error');}; throw {"type":"exception", "msg":"error"}; throw "error" ; throw function(){alert('error');}; throw {"type":"exception", "msg":"error"}; throw "error" ; La gestion d’erreurs par exceptions et par blocs Ces exceptions peuvent êtes lancées n’importe où dans le code. throwfunction(){alert('error');}; throw {"type":"exception", "msg":"error"}; throw "error";
La gestion d’erreurs par exceptions et par blocs Les blocs try…catch Afin de pouvoir récupérer les exceptions il est nécessaire d’avoir un écouteur d’exception, c’est le rôle du bloc « try », si aucun bloc « try » n’est défini, l’ensemble du code avant le « catch » est écouté. Le bloc « catch » lui permet de récupérer l’exception et de la traiter.
La gestion d’erreurs par exceptions et par blocs //Va afficher une alerte « erreur » throw "erreur" ; catch(e){ alert(e) } //Va également afficher une alerte « erreur » try{ throw "erreur" ; } catch(e){ alert(e) } //Va aussi afficher une alerte « erreur », puisque les exceptions traversent les fonctions var maFonction = function() { throw "erreur" ; } try{ maFonction() ; } catch(e){ alert(e) }
La gestion d’erreurs par exceptions et par blocs Le bloc finally Le bloc finally est appelé après l’ensemble du traitement que des exceptions aient été déclenchées ou non.
La gestion d’erreurs par exceptions et par blocs //Va afficher l’alerte « erreur » puis l’alerte « fin », on remarque également qu’une fonction est //passée comme exception, elle peut donc être exécutée dans le bloc « catch » try{ throwfunction(){alert('erreur')}; } catch(e) { e(); } finally { alert('fin'); } //Va afficher « fin » même si l’exception n’a pas été lancée if(false) throwfunction(){alert('erreur')}; } catch(e) { e(); } finally { alert('fin'); }