ES6 - Hata İşleme

Programlamada üç tür hata vardır: Sözdizimi Hataları, Çalışma Zamanı Hataları ve Mantıksal Hatalar.

Sözdizimi Hataları

Sözdizimi hataları da denir parsing errors, geleneksel programlama dillerinde derleme zamanında ve JavaScript'te yorumlama zamanında oluşur. JavaScript'te bir sözdizimi hatası oluştuğunda, yalnızca sözdizimi hatasıyla aynı iş parçacığı içinde bulunan kod etkilenir ve diğer iş parçacıklarındaki kodun geri kalanı, içlerindeki hiçbir şeyin hatayı içeren koda bağlı olmadığı varsayılarak yürütülür.

Çalışma Zamanı Hataları

Çalışma zamanı hataları, aynı zamanda exceptions, yürütme sırasında ortaya çıkar (derleme / yorumlamadan sonra). İstisnalar, oluştukları iş parçacığını da etkiler ve diğer JavaScript iş parçacıklarının normal çalışmaya devam etmesine izin verir.

Mantıksal Hatalar

Mantık hataları, izlenmesi en zor hata türleri olabilir. Bu hatalar bir sözdizimi veya çalışma zamanı hatasının sonucu değildir. Bunun yerine, komut dosyanızı çalıştıran mantıkta bir hata yaptığınızda ve beklendiği gibi sonucu alamadığınızda ortaya çıkarlar.

Bu hataları yakalayamazsınız, çünkü iş gereksinimlerinize ve programınıza ne tür bir mantık koymak istediğinize bağlıdır.

JavaScript, çalışma zamanı hataları oluştuğunda Error nesnesinin örneklerini atar. Aşağıdaki tablo, Error nesnesinin önceden tanımlanmış türlerini listeler.

Sr.No Hata Nesne ve Açıklama
1

EvalError

Global işlevle ilgili meydana gelen bir hatayı temsil eden bir örnek oluşturur eval().

2

RangeError

Sayısal bir değişken veya parametre geçerli aralığının dışında olduğunda ortaya çıkan bir hatayı temsil eden bir örnek oluşturur.

3

ReferenceError

Geçersiz bir referansın referansının kaldırılması sırasında oluşan bir hatayı temsil eden bir örnek oluşturur.

4

SyntaxError

Kodu ayrıştırırken oluşan bir sözdizimi hatasını temsil eden bir örnek oluşturur.

5

TypeError

Bir değişken veya parametre geçerli bir türde olmadığında ortaya çıkan bir hatayı temsil eden bir örnek oluşturur.

6

URIError

Oluşan bir hatayı temsil eden bir örnek oluşturur encodeURI() veya decodeURI() geçersiz parametreler geçirildi.

İstisnalar Atmak

Bir hata (önceden tanımlanmış veya kullanıcı tanımlı) kullanılarak ortaya çıkarılabilir. throw statement. Daha sonra bu istisnalar tespit edilebilir ve uygun bir önlem alabilirsiniz. Aynı sözdizimi aşağıdadır.

Sözdizimi: Genel bir istisna oluşturma

throw new Error([message]) 
OR 
throw([message])

Sözdizimi: Belirli bir istisna atma

throw new Error_name([message])

İstisna işleme

İstisna işleme, bir try...catch statement. Program bir istisna ile karşılaştığında, program dostça olmayan bir şekilde sona erecektir. Bu beklenmedik hataya karşı korunmak için, kodumuzu bir try ... catch deyimine yerleştirebiliriz.

Try bloğunu ya tam olarak bir catch bloğu ya da bir last block (ya da her ikisinden biri) takip etmelidir. Try bloğunda bir istisna meydana geldiğinde, istisna e'ye yerleştirilir ve catch bloğu çalıştırılır. İsteğe bağlı nihayet bloğu, dene / yakala sonra koşulsuz olarak yürütülür

Aynı sözdizimi aşağıdadır.

try {  
   // Code to run  
   [break;]  
} catch ( e ) {  
   // Code to run if an exception occurs
   [break;]  
}[ finally {  
   // Code that is always executed regardless of  
   // an exception occurring  
}]

Misal

var a = 100; 
var b = 0; 
try { 
   if (b == 0 ) { 
      throw(“Divide by zero error.”); 
   } else { 
      var c = a / b; 
   } 
} 
catch( e ) { 
   console.log("Error: " + e ); 
}

Çıktı

Yukarıdaki kod başarılı bir şekilde yürütüldüğünde aşağıdaki çıktı görüntülenir.

Error: Divide by zero error

Note - Not: Bir işlevde bir istisna oluşturabilir ve ardından bu istisnayı aynı işlevde veya arayan işlevinde bir try...catch blok.

Onerror () Yöntemi

onerrorolay işleyici, JavaScript'te hata işlemeyi kolaylaştıran ilk özellikti. Hata olayı, sayfada bir istisna meydana geldiğinde pencere nesnesinde tetiklenir.

Misal

<html> 
   <head> 
      <script type = "text/javascript"> 
         window.onerror  =  function () {  
            document.write ("An error occurred.");  
         } 
      </script> 
   </head> 

   <body> 
      <p>Click the following to see the result:</p> 
      <form> 
         <input type = "button" value = "Click Me" onclick = "myFunc();" /> 
      </form> 
   </body> 
</html>

Çıktı

Yukarıdaki kod başarılı bir şekilde yürütüldüğünde aşağıdaki çıktı görüntülenir.

Onerror olay işleyicisi, hatanın tam yapısını belirlemek için üç parça bilgi sağlar -

  • Error message - Tarayıcının verilen hata için görüntüleyeceği mesajın aynısı.

  • URL - Hatanın oluştuğu dosya.

  • Line number - Verilen URL'de hataya neden olan satır numarası.

Aşağıdaki örnek, bu bilgilerin nasıl çıkarılacağını gösterir.

Misal

<html> 
   <head> 
      <script type = "text/javascript"> 
         window.onerror  =  function (msg, url, line) {  
            document.write ("Message : " + msg );  
            document.write ("url : " + url );  
            document.write ("Line number : " + line );  
         } 
      </script> 
   </head> 

   <body> 
      <p>Click the following to see the result:</p> 
      <form> 
         <input type = "button" value = "Click Me" onclick = "myFunc();" /> 
      </form> 
   </body> 
</html>

Özel Hatalar

JavaScript, özel hatalar kavramını destekler. Aşağıdaki örnek aynı şeyi açıklamaktadır.

Örnek 1: Varsayılan mesajla birlikte Özel Hata

function MyError(message) { 
   this.name = 'CustomError'; 
   this.message = message || 'Error raised with default message'; 
} 
try { 
   throw new MyError(); 
} catch (e) {  
   console.log(e.name);      
   console.log(e.message);  // 'Default Message' 
}

Yukarıdaki kod başarılı bir şekilde yürütüldüğünde aşağıdaki çıktı görüntülenir.

CustomError 
Error raised with default message

Örnek 2: Kullanıcı tanımlı hata mesajı ile Özel Hata

function MyError(message) { 
   this.name = 'CustomError'; 
   this.message = message || 'Default Error Message';  
} try { 
   throw new MyError('Printing Custom Error message'); 
} 
catch (e) { 
   console.log(e.name);      
   console.log(e.message);  
}

Yukarıdaki kod başarılı bir şekilde yürütüldüğünde aşağıdaki çıktı görüntülenir.

CustomError 
Printing Custom Error message