Javascript les spécificités du langage - Partie 7 -
La gestion derreurs par exceptions et par blocs Comme nombreux langages, Javascript intègre une gestion derreur par blocs « try », « catch », « finally » qui permettent de gérer les exceptions lancées durant le déroulement des scripts.
La gestion derreurs 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 sest interrompu. En Javascript nimporte quel type dobjet peut être lancée, une exception se déclenche par un « throw » et traverse les fonctions.
La gestion derreurs par exceptions et par blocs Ces exceptions peuvent êtes lancées nimporte où dans le code. throw function(){alert('error');}; throw {"type":"exception", "msg":"error"}; throw "error"; throw function(){alert('error');}; throw {"type":"exception", "msg":"error"}; throw "error" ; throw function(){alert('error');}; throw {"type":"exception", "msg":"error"}; throw "error" ;
La gestion derreurs par exceptions et par blocs Les blocs try…catch Afin de pouvoir récupérer les exceptions il est nécessaire davoir un écouteur dexception, cest le rôle du bloc « try », si aucun bloc « try » nest défini, lensemble du code avant le « catch » est écouté. Le bloc « catch » lui permet de récupérer lexception et de la traiter.
La gestion derreurs 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 derreurs par exceptions et par blocs Le bloc finally Le bloc finally est appelé après lensemble du traitement que des exceptions aient été déclenchées ou non.
La gestion derreurs par exceptions et par blocs //Va afficher lalerte « erreur » puis lalerte « fin », on remarque également quune fonction est //passée comme exception, elle peut donc être exécutée dans le bloc « catch » try{ throw function(){alert('erreur')}; } catch(e) { e(); } finally { alert('fin'); } //Va afficher « fin » même si lexception na pas été lancée if(false) throw function(){alert('erreur')}; } catch(e) { e(); } finally { alert('fin'); }