Skip to content

Commit

Permalink
translated error-handling
Browse files Browse the repository at this point in the history
  • Loading branch information
gnwx authored and sumn2u committed Jun 27, 2023
1 parent 82166ff commit 72c6a43
Show file tree
Hide file tree
Showing 3 changed files with 117 additions and 0 deletions.
2 changes: 2 additions & 0 deletions tr/error-handling/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@


48 changes: 48 additions & 0 deletions tr/error-handling/try...-catch.md
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 %}
67 changes: 67 additions & 0 deletions tr/error-handling/try...catch...finally.md
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 %}

1 comment on commit 72c6a43

@vercel
Copy link

@vercel vercel bot commented on 72c6a43 Jun 27, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.