-
Notifications
You must be signed in to change notification settings - Fork 149
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
117 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
--- | ||
layout: editorial | ||
chapter: 12 | ||
pageNumber: 68 | ||
--- | ||
|
||
# Bölüm 12 | ||
|
||
# Error Handling (Hata Yönetimi) | ||
|
||
Programlamada hatalar çeşitli nedenlerle meydana gelir; bazıları kod hatalarından, bazıları yanlış girdiden ve diğer öngörülemeyen şeylerden kaynaklanır. Bir hata oluştuğunda, kod durur ve genellikle konsolda görülen bir hata mesajı oluşturur.  | ||
|
||
# try... catch | ||
|
||
Kodun çalışmasını durdurmak yerine, kodu durdurmadan hataları yakalamayı sağlayan `try...catch` yapısını kullanabiliriz. `try...catch` yapısının iki ana bloğu vardır; `try` ve ardından `catch`.  | ||
|
||
```javascript | ||
try { | ||
// kodun devamı | ||
} catch (err) { | ||
// hata yönetimi | ||
} | ||
``` | ||
|
||
İlk olarak `try` bloğundaki kod çalıştırılır. Herhangi bir hatayla karşılaşılmazsa `catch` bloğu atlanır. Bir hata oluşursa, `try` çalışması durdurulur ve kontrol sırası `catch` bloğuna taşınır. Hatanın nedeni `err` değişkeninde yakalanır. | ||
|
||
```javascript | ||
try { | ||
// kodun devamı | ||
alert("Welcome to Learn JavaScript"); | ||
asdk; // Hata: asdk değişkeni tanımlanmadı | ||
} catch (err) { | ||
console.log("Error has occurred"); | ||
} | ||
``` | ||
|
||
{% hint style="warning" %} | ||
`try...catch` 'in kullanılabilmesi için kodun çalışabilir ve senkronize olması gerekir. | ||
{% endhint %} | ||
|
||
Özel bir hata vermek için `throw` ifadesi kullanılabilir. Oluşan hatalar tarafından üretilen hata objesinin iki ana özelliği vardır.  | ||
|
||
- **name**: Hata ismi | ||
- **message**: Hata ile ilgili açıklama mesajı  | ||
|
||
{% hint style="info" %} | ||
Eğer bir `error` mesajına ihtiyacınız yoksa catch atlanabilir. | ||
{% endhint %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
--- | ||
chapter: 12 | ||
pageNumber: 69 | ||
--- | ||
|
||
# try...catch...finally | ||
|
||
`try...catch` 'e `finally` adında bir yapı daha ekleyebiliriz, bu kod her durumda çalışır. Yani hata olmadığında `try`den sonra ve hata durumunda bir `catch`den sonra. `try...catch...finally` için sözdizimi (_syntax_) aşağıda gösterilmiştir. | ||
|
||
```javascript | ||
try { | ||
// kodu çalıştırmayı dene | ||
} catch (err) { | ||
// hataları denetle | ||
} finally { | ||
// her durumda çalıştır | ||
} | ||
``` | ||
|
||
Örnek bir kod örneği: | ||
|
||
```javascript | ||
try { | ||
alert("try"); | ||
} catch (err) { | ||
alert("catch"); | ||
} finally { | ||
alert("finally"); | ||
} | ||
``` | ||
|
||
Yukarıdaki örnekte, önce `try` bloğu çalıştırılır ve ardından herhangi bir hata olmadığı için `finally` bloğu çalıştırılır. | ||
|
||
{% exercise %} | ||
Pay ve payda olmak üzere iki argüman alan ve aşağıdaki ayarları kullanarak payın paydaya bölünmesinin sonucunu döndüren bir `divideNumbers()` fonksiyonu yazın. | ||
|
||
{% initial %} | ||
function divideNumbers(numerator, denominator) { | ||
try { | ||
// pay ile paydayı bölmek için `try` kodu | ||
} catch (error) { | ||
// hata mesajı yazdırma | ||
} finally { | ||
// yazdırma işlemi tamamlandı | ||
} | ||
// return result | ||
} | ||
let answer = divideNumbers(10, 2); | ||
|
||
{% solution %} | ||
function divideNumbers(numerator, denominator) { | ||
let result; | ||
try { | ||
result = numerator / denominator; | ||
} catch (error) { | ||
console.error(`Error: ${error}`); | ||
} finally { | ||
console.log('Function finished executing'); | ||
} | ||
return result; | ||
} | ||
let answer = divideNumbers(10, 2); | ||
{% validation %} | ||
assert(answer == 5); | ||
|
||
{% context %} | ||
{% endexercise %} |
72c6a43
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Successfully deployed to the following URLs:
learn-javascript – ./
javascript.sumankunwar.com.np
learn-javascript-git-main-iamsuman.vercel.app
learn-javascript-six.vercel.app
learn-javascript-iamsuman.vercel.app