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