Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. Référence
  4. Instructions
  5. throw

Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in EnglishAlways switch to English

throw

Baseline Widely available

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis ⁨juillet 2015⁩.

L'instructionthrow permet de lever une exception définie par l'utilisateur. L'exécution de la fonction courante sera stoppée (les instructions situées après l'instructionthrow ne seront pas exécutées) et le contrôle sera passé au premier bloccatch de la pile d'appels. Si aucun bloccatch ne se trouve dans les fonctions de la pile d'appels, le programme sera terminé.

Exemple interactif

function getRectArea(width, height) {  if (isNaN(width) || isNaN(height)) {    throw new Error("Parameter is not a number!");  }}try {  getRectArea(3, "A");} catch (e) {  console.error(e);  // Expected output: Error: Parameter is not a number!}

Syntaxe

js
throw expression;
expression

L'expression qui fournit l'exception à lever.

Description

L'instructionthrow permet de lever (throw en anglais) une exception. Lorsqu'on lève une exception,expression fournit la valeur de l'exception. Chacune des instructions ci-après permet de lever une exception :

js
throw "monErreur"; // génère une exception étant une chaîne de caractèresthrow 42; // génère une exception ayant la valeur 42throw true; // génère une exception ayant la valeur truethrow new Error("Obligatoire"); // génère un objet Error avec le message "Obligatoire"

On notera également que l'instructionthrow est affectée parl'insertion automatique de point-virgule car il n'est pas permis d'avoir un caractère de fin de ligne entre le mot-cléthrow et l'expression.

Exemples

Lever une exception qui est un objet

Il est possible de lever une exception qui est un objet et de faire référence aux propriétés de cet objet au sein du bloccatch. Dans l'exemple suivant, on crée un objetmonException du typeExceptionUtilisateur puis on utilise cet objet avec une instructionthrow.

js
function ExceptionUtilisateur(message) {  this.message = message;  this.name = "ExceptionUtilisateur";}function getNomMois(mo) {  mo = mo - 1; // Adjust month number for array index (1=Jan, 12=Dec)  var mois = [    "Jan",    "Fév",    "Mar",    "Avr",    "Mai",    "Juin",    "Juil",    "Août",    "Sept",    "Oct",    "Nov",    "Déc",  ];  if (mois[mo] !== undefined) {    return mois[mo];  } else {    throw new ExceptionUtilisateur("Numéro de mois invalide");  }}try {  // les instructions à tenter  var monMois = 15; // 15 est en dehors des limites prévues  var nomMois = getNomMois(monMois);} catch (e) {  nomMois = "unknown";  console.error(e.message, e.name); // on passe les caractéristiques de l'exception  // à un gestionnaire d'erreur}

Deuxième exemple avec un objet

Ici, on cherche à valider une chaîne de caractères représentant un code postal américain. Si le format utilisé est invalide, cela provoquera une exception avec un objet du typeZipFormatIncorrectException. (Le mot-cléconst introduit avec ECMAScript 6 est utilisé dans cet exemple).

js
/* * Crée un objet ZipCode. * * Les formats acceptés sont : *    12345 *    12345-6789 *    123456789 *    12345 6789 * * Si l'argument passé au constructeur ZipCode n'est pas conforme * à un de ces formats, une exception sera levée. */function ZipCode(zip) {  zip = new String(zip);  pattern = /[0-9]{5}([- ]?[0-9]{4})?/;  if (pattern.test(zip)) {    // la valeur du code sera la première correspondance    // dans la chaîne    this.value = zip.match(pattern)[0];    this.valueOf = function () {      return this.value;    };    this.toString = function () {      return String(this.value);    };  } else {    throw new ZipFormatIncorrectException(zip);  }}function ZipFormatIncorrectException(value) {  this.value = value;  this.message = "le format n'est pas conforme";  this.toString = function () {    return this.value + this.message;  };}/* * Cette fonction pourrait être utilisée dans un script * pour valider des adresses */const ZIPCODE_INVALID = -1;const ZIPCODE_UNKNOWN_ERROR = -2;function vérifierZipCode(z) {  try {    z = new ZipCode(z);  } catch (e) {    if (e instanceof ZipFormatIncorrectException) {      return ZIPCODE_INVALID;    } else {      return ZIPCODE_UNKNOWN_ERROR;    }  }  return z;}a = vérifierZipCode(95060); // renvoie 95060b = vérifierZipCode(9560); // renvoie -1c = vérifierZipCode("a"); // renvoie -1d = vérifierZipCode("95060"); // renvoie 95060e = vérifierZipCode("95060 1234"); // renvoie 95060 1234

Propager une exception

L'instructionthrow peut être utilisée pour transmettre une exception qui aurait été interceptée aveccatch. Dans l'exemple suivant, on intercepte une exception avec une valeur numérique et on propage l'exception si la valeur est supérieure à 50. L'exception qui est levée se propage dans la fonction appelante ou au niveau le plus haut, visible par l'utilisateur.

js
try {  throw n; // lève une exception avec une valeur numérique} catch (e) {  if (e <= 50) {    // des instructions pour gérer les cas entre 1 et 50  } else {    // ce cas ne peut pas être géré maintenant, on transmet l'exception    throw e;  }}

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-throw-statement

Compatibilité des navigateurs

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2025 Movatter.jp