Movatterモバイル変換


[0]ホーム

URL:


  1. Tecnologia Web para desenvolvedores
  2. JavaScript
  3. Referência JavaScript
  4. Instruções e declarações
  5. throw

Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.

View in EnglishAlways switch to English

throw

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨julho de 2015⁩.

Adeclaraçãothrow lança uma exceção definida pelo usuário. A execução da função atual vai parar (as instruções após othrow não serão executadas), e o controle será passado para o primeiro blococatch na pilha de chamadas. Se nenhum blococatch existe entre as funções "chamadoras", o programa vai terminar.

Sintaxe

throw expressão;
expressão

A expressão a ser lançada.

Descrição

Use a instruçãothrow para lançar uma exceção. Quando você lança uma exceção,expressão especifica o valor da exceção. Cada uma das intruções a seguir lança uma exceção:

js
throw "Erro2"; // gera uma exceção com um valor stringthrow 42; // gera uma exceção com o valor 42throw true; // gera uma exceção com o valor true

Note também que a instruçãothrow é afetada pelainserção automática de ponto-e-vírgula (ASI) como nenhum terminador de linha entre a palavrathrow e a expressão é permitido.

Exemplos

Lançando um objeto

Você pode especificar um objeto quando você lança uma exceção. Você pode então referenciar as propriedades do objeto no blococatch. O exemplo a seguir cria um objeto do tipoUserException e o usa na intruçãothrow.

js
function UserException(message) {  this.message = message;  this.name = "UserException";}function getMonthName(mo) {  mo = mo - 1; // Ajusta o número do mês para index de array (1=Jan, 12=Dec)  var months = [    "Jan",    "Feb",    "Mar",    "Apr",    "May",    "Jun",    "Jul",    "Aug",    "Sep",    "Oct",    "Nov",    "Dec",  ];  if (months[mo] !== undefined) {    return months[mo];  } else {    throw new UserException("InvalidMonthNo");  }}try {  // statements to try  var myMonth = 15; // 15 is out of bound to raise the exception  monthName = getMonthName(myMonth);} catch (e) {  monthName = "unknown";  logMyErrors(e.message, e.name); // pass exception object to err handler}

Outro exemplo lançando um objeto

O exemplo a seguir testa uma string de entrada para um cep dos Estados Unidos. Se o CEP utiliza um formato inválido, a intrução throw lança uma exceção através da criação de um objeto do tipoZipCodeFormatException.

js
/* * Cria um objeto ZipCode. * * Formatos aceitos para o CEP são: *    12345 *    12345-6789 *    123456789 *    12345 6789 * * Se o argumento passado para o construtor do ZipCode não atende * a um desses padrões uma exceção é lançada. */function ZipCode(zip) {  zip = new String(zip);  pattern = /[0-9]{5}([- ]?[0-9]{4})?/;  if (pattern.test(zip)) {    // o valor do CEP será a primeira combinação na string    this.value = zip.match(pattern)[0];    this.valueOf = function () {      return this.value;    };    this.toString = function () {      return String(this.value);    };  } else {    throw new ZipCodeFormatException(zip);  }}function ZipCodeFormatException(value) {  this.value = value;  this.message = "does not conform to the expected format for a zip code";  this.toString = function () {    return this.value + this.message;  };}/* * Isso poderia estar em um script que valida dados de endereços * para os endereços dos Estados Unidos. */const ZIPCODE_INVALID = -1;const ZIPCODE_UNKNOWN_ERROR = -2;function verifyZipCode(z) {  try {    z = new ZipCode(z);  } catch (e) {    if (e instanceof ZipCodeFormatException) {      return ZIPCODE_INVALID;    } else {      return ZIPCODE_UNKNOWN_ERROR;    }  }  return z;}a = verifyZipCode(95060); // retorna 95060b = verifyZipCode(9560); // retorna -1c = verifyZipCode("a"); // retorna -1d = verifyZipCode("95060"); // retorna 95060e = verifyZipCode("95060 1234"); // retorna 95060 1234

Relançando uma exceção

Você pode usarthrow para relançar uma exceção após você pegá-la. O exemplo a seguir pega uma exceção com um valor numérico e a relança se o valor for maior que 50. A exceção relançada propaga para a função encapsuladora ou para o nível superior para que o usuário a veja.

js
try {  throw n; // lança uma exceção com um valor numérico} catch (e) {  if (e <= 50) {    // instruções para tratar exceções 1-50  } else {    // não pode tratar esta exceção então relança    throw e;  }}

Especificações

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

Compatibilidade com navegadores

Veja também

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp