Try Catch Yapısında Throw Durumu

Try-Catch denetim yapısı hataları yakalamak için kullanılmaktadır. Try bölümünde bir hata bulunursa, o hata ile ilgili bilgiyi catch bölümüne atar. Eğer içi içe try-catch kullanılıyorsa bir önceki try-catch yapısına hatayı fırlatmak için throw kullanılır. Throw’dan fırlatılan hata bir dıştaki catch tarafından tekrar tutulur.

Try Catch Yapısında Throw Durumu 

Throw, and Try...Catch...Finally

Bu try ifade çalıştırılacak (denenecek) bir kod bloğu tanımlar.

Bu catch ifade herhangi bir hatayı işleyecek bir kod bloğu tanımlar.

Bu finally ifade, sonuçtan bağımsız olarak çalıştırılacak bir kod bloğu tanımlar.

Bu throw ifade özel bir hatayı tanımlıyor.


Hatalar Olacak!

JavaScript kodunu çalıştırırken farklı hatalar ortaya çıkabilir.

Hatalar, programcının yaptığı kodlama hataları, yanlış girdilerden kaynaklanan hatalar ve öngörülemeyen diğer şeyler olabilir.

Örnek

Bu örnekte, kasıtlı olarak bir hata üretmek için "alert" kelimesini "adddlert" olarak yanlış yazdık:

<p id="demo"></p>

<script>
try {
  adddlert("Welcome guest!");
}
catch(err) {
  document.getElementById("demo").innerHTML = err.message;
}
</script>

JavaScript, adddlert'i bir hata olarak yakalar ve bunu işlemek için catch kodunu yürütür.


JavaScript try and catch

Bu try ifade, yürütülürken hatalara karşı test edilecek bir kod bloğu tanımlamanıza olanak tanır.

Bu catch ifade, try bloğunda bir hata oluşması durumunda yürütülecek kod bloğunu tanımlamanıza olanak tanır.

JavaScript ifadeleri tryve catchçiftler halinde gelir:

try {
  Denenecek kod bloğu
}
catch(err) {
 Hataları işlemek için kod bloğu
}

JavaScript Hata Veriyor

Bir hata oluştuğunda JavaScript normalde durur ve bir hata mesajı üretir.

Bunun teknik terimi şudur: JavaScript bir istisna (bir hata) fırlatacaktır .

JavaScript aslında iki özelliğe sahip bir Error nesnesi oluşturacaktır : (throw an error) .


throw Kullanımı

Bu throw ifade, özel bir hata oluşturmanıza olanak tanır.

Teknik olarak bir istisna (bir hata) fırlatabilirsiniz .

Stringİstisna bir JavaScript , a Number, a Booleanveya bir olabilir Object:

throw "Too big";    // throw a text
throw 500;          // throw a number

ve throw ile birlikte try catch kullanırsanız program akışını kontrol edebilir ve özel hata mesajları üretebilirsiniz.
 


Giriş Doğrulama Örneği

Bu örnek girdiyi inceler. Değer yanlışsa, bir istisna (err) atılır.

İstisna (err), catch ifadesi tarafından yakalanır ve özel bir hata mesajı görüntülenir:

<!DOCTYPE html>
<html>
<body>

<p>Please input a number between 5 and 10:</p>

<input id="demo" type="text">
<button type="button" onclick="myFunction()">Test Input</button>
<p id="p01"></p>

<script>
function myFunction() {
  const message = document.getElementById("p01");
  message.innerHTML = "";
  let x = document.getElementById("demo").value;
  try {
    if(x.trim() == "") throw "empty";
    if(isNaN(x)) throw "not a number";
    x = Number(x);
    if(x < 5) throw "too low";
    if(x > 10) throw "too high";
  }
  catch(err) {
    message.innerHTML = "Input is " + err;
  }
}
</script>

</body>
</html>
finally Kullanımı

Bu finally ifade, try ve catch komutlarından sonra, sonuçtan bağımsız olarak kod çalıştırmanıza olanak tanır:

try {
  Block of code to try
}
catch(err) {
  Block of code to handle errors
}
finally {
  Block of code to be executed regardless of the try / catch result
}
Örnek
function myFunction() {
  const message = document.getElementById("p01");
  message.innerHTML = "";
  let x = document.getElementById("demo").value;
  try {
    if(x.trim() == "") throw "is empty";
    if(isNaN(x)) throw "is not a number";
    x = Number(x);
    if(x > 10) throw "is too high";
    if(x < 5) throw "is too low";
  }
  catch(err) {
    message.innerHTML = "Error: " + err + ".";
  }
  finally {
    document.getElementById("demo").value = "";
  }
}

Hata Nesnesi

JavaScript'te, bir hata oluştuğunda hata bilgisi sağlayan yerleşik bir hata nesnesi vardır.

Hata nesnesi iki yararlı özellik sağlar: ad ve mesaj.


Hata Nesnesi Özellikleri
Özellik Açıklma
name Bir hata adı ayarlar veya döndürür
message Bir hata mesajı (bir dize) ayarlar veya döndürür

Hata Adı Değerleri

Hata adı özelliği tarafından altı farklı değer döndürülebilir:

Error Name Description
EvalError An error has occurred in the eval() function
RangeError A number "out of range" has occurred
ReferenceError An illegal reference has occurred
SyntaxError A syntax error has occurred
TypeError A type error has occurred
URIError An error in encodeURI() has occurred

Altı farklı değer aşağıda açıklanmıştır.


Değerlendirme Hatası

An EvalError, eval() fonksiyonunda bir hata olduğunu gösterir.

JavaScript'in yeni sürümleri EvalError fırlatmaz. Bunun yerine SyntaxError kullanın.


Aralık Hatası

RangeErrorYasal değer aralığının dışında bir sayı kullanırsanız A hatası alırsınız.

Örneğin: Bir sayının anlamlı basamak sayısını 500 olarak ayarlayamazsınız.

Örnek

let num = 1;
try {
  num.toPrecision(500);   // A number cannot have 500 significant digits
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}
 
 
 

Referans Hatası

ReferenceError Bildirilmemiş bir değişkeni kullanırsanız (referans verirseniz) A atılır:

Örnek

let x = 5;
try {
  x = y + 1;   // y cannot be used (referenced)
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

Sözdizimi Hatası

SyntaxErrorSözdizimi hatası olan bir kodu değerlendirmeye çalışırsanız A fırlatılır.

Örnek

try {
  eval("alert('Hello)");   // Missing ' will produce an error
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

Tür Hatası

TypeErrorBir işlenen veya bağımsız değişken bir operatör veya fonksiyon tarafından beklenen tiple uyumsuzsa A fırlatılır.

Örnek

let num = 1;
try {
  num.toUpperCase();   // You cannot convert a number to upper case
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

URI (Tekdüzen Kaynak Tanımlayıcısı) Hatası

URIErrorURI fonksiyonunda yasa dışı karakterler kullanırsanız bir hata oluşur:

Örnek

try {
  decodeURI("%%%");   // You cannot URI decode percent signs
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}
 
 

Tam Hata Referansı

Error nesnesinin tam referansı için Tam JavaScript Hata Referansımıza gidin .

Örnek

try {
 
    try {
        var a = nonexist.b;
        // Hatanın olduğu yer...
    } catch( myError ) {
        // Hatayı yakalar
        alert( myError.message );
        // Mesaj verir..
        throw( myError );
        // Hatayı bir dışındaki try-catch'e fırlat..
    }
 
} catch( myErrorObject ) {
    // Buraya fırlatılan hata gelir...
    alert( myErrorObject.message );
    //Hata nesnesi aynı olacağından mesaj da aynı olur...
}

 

Yukarıda görüldüğü gibi genel kullanım böyledir. Daha fazla iç içe try-catch yapısı kullanmak işleri daha da kolay hale getirebilir.
 

<script type="text/javascript">
try {
    try {
        var a = cıkıs;
    } catch( Hata ) {
        alert( Hata.message );
        throw( Hata );
    }
} catch( HataNesnesi ) {
    alert( HataNesnesi.message );
}
</script>

 
Try Catch Yapısında Throw Durumu

 

Try Catch Yapısında Throw Durumu

 

 

 

Örnek

<html>
<head>
 
<script language="text/javascript">
yanlisIsim = new Error ("Sistem kulanici isimi ile uyusmuyor..");
bosIsim = new Error ("Sistem kullanici ismi girilmedi..");
function kontrolEt(e){
    alert (e.message);
}
function validateForm(){
    isimKontrol();
}
function isimKontrol(){
    try {
        if (document.forms[0].kullanici.value == ""){
            throw bosIsim;
        }
        if (document.forms[0].kullanici.value != "fatih"){
            throw yanlisIsim;
        }
    } catch (e) {
        kontrolEt(e);
    }
}
</script>
 
</head>
<body>
<form onSubmit="validateForm()">
Kullanici Ismini Girin: <input type="text" name="kullanici">
<input type="submit" name="submit" value="Gonder">
</form>
</body>
</html>

Try Catch Yapısında Throw DurumuTry Catch Yapısında Throw Durumu

 

Kaynak

 

 

 

Yorumunuzu Ekleyin
Yükleniyor...
Yükleniyor...