This translation is incomplete. Please help translate this article from English.

Throw ifadesi kullanıcı tanımlı bir istisna atar. Mevcut işlevin yürütülmesi durur (atmadan sonraki ifadeler yürütülmez) ve kontrol, çağrı yığındaki ilk yakalama blokuna geçirilir. Arayanlar arasında yakalama bloğu yoksa, program sonlanır.

Syntax

throw ifade; 
ifade
Hata fırlatmak için ifade.

Açıklama

Bir istisna atmak için throw ifadesini kullanın. Bir istisna atarken, ifade istisnanın değerini belirtir. Aşağıdakilerin her biri bir istisna atar:

throw 'Error2'; // String bir ifade ile istisna oluşturur.
throw 42;       // Integer bir değerde değer oluşturur.
throw true;     // Boolean bir ifade de istisna oluşturur.
throw new Error('Required');  // `Required` adıyla bir hata nesnesi oluşturur.

Also note that the throw statement is affected by automatic semicolon insertion (ASI) as no line terminator between the throw keyword and the expression is allowed.

Örnek

İstisna Nesnesi Örneği

Bir istisna atarken bir nesne belirtebilirsiniz. Daha sonra nesnenin özelliklerini catch bloğuna referansta bulabilirsiniz. Aşağıdaki örnek, UserException türünde bir nesne oluşturur ve bunu bir throw ifadesinde kullanır.

function UserException(message) {
   this.message = message;
   this.name = 'UserException';
}
function getMonthName(mo) {
   mo = mo - 1; // Dizi içinde bir ay sayısı belirlenir (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 {
   // try bloğu
   var myMonth = 15; // Bir yılda 15 ay bulunmaz.
   var monthName = getMonthName(myMonth);
} catch (e) {
   monthName = 'unknown';
   console.log(e.message, e.name); // catch bloğuna hata nesnesinin parametreleri giriliyor.
}

Bir istisnayı atmanın başka bir örneği

Aşağıdaki örnek, ABD posta kodu için bir giriş dizesini sınar. Posta kodu geçersiz bir format kullanıyorsa, throw ifadesi bir nesne türü oluşturarak bir istisna atar .

​​​​​​ZipCodeFormatException.

/*
 * Zip Kodu objesi oluşturulur.
 *
 * Kabul edilen zip kodları:
 *    12345
 *    12345-6789
 *    123456789
 *    12345 6789
 *
 * parametre kabul edilen zip kodlara uygun değilse
 * bir istisna atılır.
 */

function ZipCode(zip) {
   zip = new String(zip);
   pattern = /[0-9]{5}([- ]?[0-9]{4})?/;
   if (pattern.test(zip)) {
      // zip kodu değeri dizideki ilk eşleşme olacak
      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 = 'bir posta kodu için beklenen değerlerle uyuşmuyor';
   this.toString = function() {
      return this.value + this.message;
   };
}

/*
 * Zip kodlarını doğrulayan bir komut bloğu olabilir.
 */

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);         // 95060
b = verifyZipCode(9560);          // -1
c = verifyZipCode('a');           // -1
d = verifyZipCode('95060');       // 95060
e = verifyZipCode('95060 1234');  // 95060 1234

Bir istisnayı tekrar atmak

Hatayı yakaladıktan sonra bir özel durumu geri almak için throw kullanabilirsiniz. Aşağıdaki örnek,

Seğer 50'nin üzerindeyse onu yeniden kullanır. Yeniden biçimlendirilmiş istisna, kullanıcının onu görebilmesi için kapama işlevine veya en üst düzeye kadar çoğalır..

try {
   throw n; // integer bir değerde istisna atar
} catch (e) {
   if (e <= 50) {
      // değer 1 ile 50 arasında ise
   } else {
      // tekrar bir istisna atar
      throw e;
   }
}

Specifications

Specification Status Comment
ECMAScript 3rd Edition (ECMA-262) Standard

Başlangıç

Javascript 1.4

ECMAScript 5.1 (ECMA-262)
The definition of 'throw statement' in that specification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'throw statement' in that specification.
Standard  
ECMAScript Latest Draft (ECMA-262)
The definition of 'throw statement' in that specification.
Draft  

Browser compatibility

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Basic supportChrome Full support YesEdge Full support YesFirefox Full support 1IE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

See also

Document Tags and Contributors

Contributors to this page: onurozkir
Last updated by: onurozkir,