Skip to content

Commit d50794e

Browse files
committed
fix typo and correct the sentence
1 parent c46de1c commit d50794e

File tree

1 file changed

+43
-43
lines changed

1 file changed

+43
-43
lines changed

1-js/10-error-handling/1-try-catch/article.md

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
# Hataları idare etme, "try..catch"
1+
# Hataları idare etme, "try...catch"
22

33
Programlarken ne kadar mükemmel olmaya çalışsak da bazen kodumuzda hatalar olabilir. Bu bizim hatalarımızdan dolayı olabileceği gibi, kullanıcı girişlerinden, beklenmeyen server cevaplarından veya binlerce farklı nedenden dolayı oluşabilir.
44

55
Genelde kodda bir hata olduğunda yazdığımız kod bir adım ileriye gidemeden sona erer ve konsola bunun nedenini yazar.
66

7-
Hataları "yakalamak" için "try..catch" kullanarak doğrudan kodun ölmesine aman vermek yerine daha mantıklı şeyler yaptırabiliriz.
7+
Hataları "yakalamak" için "try...catch" kullanarak doğrudan kodun ölmesine aman vermek yerine daha mantıklı şeyler yaptırabiliriz.
88

99
[cut]
1010

11-
## "try..catch" yazımı
11+
## "try...catch" yazımı
1212

13-
`try..catch` yapısı iki ana bloktan oluşur: `try` (dene) ve sonrasında `catch` (yakala):
13+
`try...catch` yapısı iki ana bloktan oluşur: `try` (dene) ve sonrasında `catch` (yakala):
1414

1515
```js
1616
try {
@@ -28,13 +28,13 @@ try {
2828

2929
1. Önce `try {...}` içerisindekiler çalıştırılır.
3030
2. Eğer hata yoksa `catch(err)` görmezden gelinir: çalışma try'ın sonuna ulaşır ve sonra `catch`'i atlar.
31-
3. Eğer hata meydana gelirse, `try`'ın çalışması durdurulur ve `catch(err)` çalışmaya başlar. Buradaki `err` değişkeni ne olduda hata meydana geldiye dair detayları tutan bir objedir.
31+
3. Eğer hata meydana gelirse, `try`'ın çalışması durdurulur ve `catch(err)` çalışmaya başlar. Buradaki `err` değişkeni "ne oldu da hata meydana geldi"ye dair detayları tutan bir objedir.
3232

3333
![](try-catch-flow.svg)
3434

3535
Öyleyse `try {...}` içerisindeki kod doğrudan sona eremez, bize `catch` içerisinde bunu idare etmemiz için olanak sağlar.
3636

37-
Bir kaç örnek ile daha da pekiştirelim:
37+
Birkaç örnek ile daha da pekiştirelim:
3838

3939

4040
- Hatasız örnek: `alert` `(1)` ve `(2)`'yi gösterir:
@@ -80,8 +80,8 @@ Bir kaç örnek ile daha da pekiştirelim:
8080
```
8181
8282
83-
````warn header="`try..catch` sadece çalışma zamanlı hatalar içindir"
84-
`try..catch`'in çalışabilmesi için kod çalışabilir olmalıdır. Diğer bir deyişle geçerli bir JavaScript kodu olmalıdır.
83+
````warn header="`try...catch` sadece çalışma zamanlı hatalar içindir"
84+
`try...catch`'in çalışabilmesi için kod çalışabilir olmalıdır. Diğer bir deyişle geçerli bir JavaScript kodu olmalıdır.
8585

8686
Eğer kod yazımsal olarak hatalıysa çalışmayacaktır, örneğin süslü parantezler açılmış ama kapatılmamışsa:
8787

@@ -95,12 +95,12 @@ try {
9595

9696
JavaScript motoru önce kodu okur, sonra çalıştırır. Eğer hata okuma safhasında meydana gelirse bunlara "ayrıştırma-zamanı" hataları denir ve kurtarılamaz hatalardır. Bundan dolayı JavaScript motoru bunları anlayamaz.
9797

98-
Bundan dolayı `try..catch` ancak ve ancak gerçerli kodlarda oluşacak hataları idare edebilir. Bu hatalara "çalışma zamanı hataları" veya bazen "istisnalar"(Exception) denilmektedir.
98+
Bundan dolayı `try...catch` ancak ve ancak geçerli kodlarda oluşacak hataları idare edebilir. Bu hatalara "çalışma zamanı hataları" veya bazen "istisnalar" (exception) denilmektedir.
9999
````
100100

101101

102-
````warn header="`try..catch` Senkronize olarak çalışmaktadır"
103-
Eğer "zamanlanmış" bir kodda, `setTimeout` gibi, bir hata meydana gelirse `try..catch` bunu yakalayamaz:
102+
````warn header="`try...catch` Senkronize olarak çalışmaktadır"
103+
Eğer "zamanlanmış" bir kodda, `setTimeout` gibi, bir hata meydana gelirse `try...catch` bunu yakalayamaz:
104104

105105
```js run
106106
try {
@@ -111,14 +111,14 @@ try {
111111
alert( "çalışmaz" );
112112
}
113113
```
114-
Bunun nedeni `try..catch`'in aslında fonksiyonu zamanlayan `setTimeout`'u kapsamasıdan dolayıdır. Fakat fonksiyon daha sonra çlışır. O anda aslında motor `try..catch`i geçmiş olur.
114+
Bunun nedeni `try...catch`'in aslında fonksiyonu zamanlayan `setTimeout`'u kapsamasıdan dolayıdır. Fakat fonksiyon daha sonra çalışır. O anda aslında motor `try...catch`i geçmiş olur.
115115

116-
Eğer zamanlanmış fonksiyon içerisinde bu hatayı yakalamak istiyorsanız, `try..catch` bloğunu fonksiyonun içerisine yazmalısınız:
116+
Eğer zamanlanmış fonksiyon içerisinde bu hatayı yakalamak istiyorsanız, `try...catch` bloğunu fonksiyonun içerisine yazmalısınız:
117117

118118
```js run
119119
setTimeout(function() {
120120
try {
121-
noSuchVariable; // try..catch hataları yakalayacaktır.
121+
noSuchVariable; // try...catch hataları yakalayacaktır.
122122
} catch (e) {
123123
alert( "hata burada yakalandı!" );
124124
}
@@ -169,9 +169,9 @@ try {
169169
```
170170

171171

172-
## `try..catch` kullanımı
172+
## `try...catch` kullanımı
173173

174-
Gerçek hayatta `try..catch`'ın nasıl kullanılabileceğine bakalım.
174+
Gerçek hayatta `try...catch`'ın nasıl kullanılabileceğine bakalım.
175175
176176
Bildiğiniz gibi, JavaScript [JSON.parse(str)](mdn:js/JSON/parse) metodu sayesinde JSON olarak tanımlanmış değerlerin okunmasına olanak tanır.
177177
@@ -194,11 +194,11 @@ JSON hakkında daha derin bilgiyi <info:json> bölümünden öğrenebilirsiniz.
194194
195195
**Eğer `json` düzgün gelmiyorsa `JSON.parse` hata üretir ve kod anında "ölür".**
196196
197-
Bunun ile yetinmeli miyiz? Elbette hayır
197+
Bunun ile yetinmeli miyiz? Elbette hayır.
198198
199199
Bu şekliyle eğer gelen veride bir hata varsa ziyaretçi nerede yanlış olduğunu bilemeyecektir. İnsanlar hata olduğunda herhangi bir hata mesajı almadan öylece ölen bir şeyden nefret ederler.
200200
201-
Bunun çözümü için `try..catch` kullanılabilir:
201+
Bunun çözümü için `try...catch` kullanılabilir:
202202
203203
```js run
204204
let json = "{ bad json }";
@@ -254,9 +254,9 @@ Yazımı şu şekildedir:
254254
```js
255255
throw <error object>
256256
```
257-
Teknik olarak her şeyi hata objesi olarak kullanmak mümküdür. Hatta bu ilkel tipler olan sayı, karakter dizisi gibi yapılar da olabilir. Fakat obje kullanmak, daha sı `name` ve `message` özelliklerine sahip obje kullanmak daha iyidir. ( Böylece gömülü gelen hatalar ile uyumlu olacaktır.)
257+
Teknik olarak her şeyi hata objesi olarak kullanmak mümkündür. Hatta bu ilkel tipler olan sayı, karakter dizisi gibi yapılar da olabilir. Fakat obje kullanmak, daha sı `name` ve `message` özelliklerine sahip obje kullanmak daha iyidir. ( Böylece gömülü gelen hatalar ile uyumlu olacaktır.)
258258

259-
JavaScript birçok standart hataya sahitir:`Error`, `SyntaxError`, `ReferenceError`, `TypeError` vs. Bunları kullanarak da hata objesiyaratmak mümkündür.
259+
JavaScript birçok standart hataya sahiptir:`Error`, `SyntaxError`, `ReferenceError`, `TypeError` vs. Bunları kullanarak da hata objesi yaratmak mümkündür.
260260

261261
Yazımı:
262262

@@ -268,7 +268,7 @@ let error = new ReferenceError(message);
268268
// ...
269269
```
270270

271-
Gömülü hatalar ( objeler değil sadece hatalar ) `name` özelliği yapıcının aynı isme sahip özelliğindne meydana gelir. `message` ise argümandan alınır.
271+
Gömülü hatalar (objeler değil sadece hatalar) `name` özelliği yapıcının aynı isme sahip özelliğinde meydana gelir. `message` ise argümandan alınır.
272272

273273
Örneğin:
274274

@@ -294,9 +294,9 @@ try {
294294
Gördüğünüz gibi bu `SyntaxError` yani yazım yanlışıdır.
295295

296296
Bizim durumumuzda ise `name`'in olmaması yazım hatası olarak tanımlanabilir.
297-
Bunu isimsiz öğretmen olmayacağından yazı hatası olarak tanımlayabiliri.
297+
Bunu isimsiz öğretmen olmayacağından yazım hatası olarak tanımlayabilir.
298298

299-
atacak olursak:
299+
Atacak olursak:
300300

301301
```js run
302302
let json = '{ "yaş": 30 }'; // incomplete data
@@ -324,7 +324,7 @@ Artık `catch` tüm hata idaresinin yapılacağı yerdir: Buna `JSON.parse` ve d
324324

325325
## Tekrar atma (Rethrowing)
326326

327-
Yukarıdaki örnekte yanlış veri ile başa çıkmak için `try..catch` kullandık. Peki başka beklenmeyen hata varsa ne yapacağız? Mesela değişken tanımsız olabilir veya bilmediğimiz bir hata ile de karşılaşabiliriz.
327+
Yukarıdaki örnekte yanlış veri ile başa çıkmak için `try...catch` kullandık. Peki başka beklenmeyen hata varsa ne yapacağız? Mesela değişken tanımsız olabilir veya bilmediğimiz bir hata ile de karşılaşabiliriz.
328328

329329
Şu şekilde:
330330

@@ -340,9 +340,9 @@ try {
340340
// (hata aslında JSON ile alakalı değil)
341341
}
342342
```
343-
Tabii ki her şey mümkün! Programcılar da hata yapar. Yıllardır milyonlarca kişinin kullandığı open-source projelerde bile hata vardır. Hatta öyle hatalar vardır ki bulunduğunda çok büyük belaya neden olabilir (`ssh`'ta bulunan hata)
343+
Tabii ki her şey mümkün! Programcılar da hata yapar. Yıllardır milyonlarca kişinin kullandığı open-source projelerde bile hata vardır. Hatta öyle hatalar vardır ki bulunduğunda çok büyük belaya neden olabilir (`ssh`'ta bulunan hata).
344344

345-
Biz denemelerimizde `try..catch`i "doğru olmayan veri"yi yakalamak için kullandık. Fakat aslında `catch` `try`'da olabilecek *tüm* hataları alır.Yukarıdaki örnekte beklenmeyecen bir hata almasına rağmen bundan dolayı `"JSON Error" mesajı verir. Bu aslında kod ayıklamayı zorlaştıran bir şeydir ve yanlış kullanımdır.
345+
Biz denemelerimizde `try...catch`i "doğru olmayan veri"yi yakalamak için kullandık. Fakat aslında `catch` `try`'da olabilecek *tüm* hataları alır. Yukarıdaki örnekte beklenmeyen bir hata alır ancak yine de`"JSON Error" mesajı verir. Bu aslında kod ayıklamayı zorlaştıran bir şeydir ve yanlış kullanımdır.
346346

347347
Yine de ne hatası olduğunu `name`'den çıkarmak mümkündür.
348348

@@ -358,11 +358,11 @@ try {
358358

359359
Kural basit:
360360

361-
**Catch sadece bildiği hataları işlemeli diğerlerini ise tekrar hata olarak atmalı**
361+
**Catch sadece bildiği hataları işlemeli diğerlerini ise tekrar hata olarak atmalı.**
362362

363363
"tekrar atma" tekniği şu şekilde detaylandırılabilir:
364364

365-
1. Catch tüm mesajları alır
365+
1. Catch tüm mesajları alır.
366366
2. `catch(err){...}` bloğunda tüm error objesi analiz edilir.
367367
3. Eğer beklemediğimiz bir hata ise bu `throw err` ile tekrar atılır.
368368

@@ -396,11 +396,11 @@ try {
396396

397397
}
398398
```
399-
`try..catch` içerisinde eğer `(*)` hata tekrar atılırsa bu, `try..catch` in dışına taşar. Bunun daha üstte bulunan başka bir `try..catch` tarafından yakalanması gerekmektedir. Böyle bir ihtimal yoksa kod burada sona ermelidir.
399+
`try...catch` içerisinde eğer `(*)` hata tekrar atılırsa bu, `try...catch` in dışına taşar. Bunun daha üstte bulunan başka bir `try...catch` tarafından yakalanması gerekmektedir. Böyle bir ihtimal yoksa kod burada sona ermelidir.
400400

401401
Böylece `catch` bloğu aslında sadece bildiği hataları idare eder ve diğerlerini hiç kontrol etmeden paslar diyebiliriz.
402402

403-
Aşağıdaki örnekte bu hatalar nasıl bir `try..catch` seviyesi daha eklenerek idare edilebilir bunu göreceğiz:
403+
Aşağıdaki örnekte bu hatalar nasıl bir `try...catch` seviyesi daha eklenerek idare edilebilir bunu göreceğiz:
404404

405405
```js run
406406
function readData() {
@@ -429,13 +429,13 @@ try {
429429
*/!*
430430
}
431431
```
432-
Burada `readData` sadece `SyntaxError` ile nasıl başa çıkacağını biliyor. Bunun yanında dıştaki `try..catch` ise geri kalan her şeyi idare ediyor.
432+
Burada `readData` sadece `SyntaxError` ile nasıl başa çıkacağını biliyor. Bunun yanında dıştaki `try...catch` ise geri kalan her şeyi idare ediyor.
433433

434-
## try..catch..finally
434+
## try...catch...finally
435435

436436
Aslında tamamı bu kadar değil!
437437

438-
`try..catch` bloğu son olarak `finally` ile bitebilir.
438+
`try...catch` bloğu son olarak `finally` ile bitebilir.
439439

440440
Eğer varsa aşağıdaki durumların hepsi için çalışır:
441441

@@ -472,9 +472,9 @@ Kod iki türlü çalışabilir:
472472
1. Eğer "Make an error?"'a "Yes" cevabını verirseniz, `try -> catch -> finally` şeklinde sona erer.
473473
2. Eğer "No" derseniz `try-> finally` şeklinde sona erer.
474474

475-
`finally` genelde `try..catch`'den önce bir şey yapıp bunu sona erdirmek (finally) istediğiniz durumlarda kullanılır.
475+
`finally` genelde `try...catch`'den önce bir şey yapıp bunu sona erdirmek (finally) istediğiniz durumlarda kullanılır.
476476

477-
Örneğin Fibonacci sayılarını hesaplayan bir fonksiyonun ne kadar sürdüğünü ölçmek istediğinizde, doğal olarak işlem başlamadan süre başlar ve işlem bittikten sonra süre biter. Fakat diyelimki fonksiyonda bir hata var. Aşağıda uygulaması görünen `fib(n)`'e negatif bir sayı gönderdiğinizde veya integer olmayan bir sayı gönderdiğinizde hata döner.
477+
Örneğin Fibonacci sayılarını hesaplayan bir fonksiyonun ne kadar sürdüğünü ölçmek istediğinizde, doğal olarak işlem başlamadan süre başlar ve işlem bittikten sonra süre biter. Fakat diyelim ki fonksiyonda bir hata var. Aşağıda uygulaması görünen `fib(n)`'e negatif bir sayı gönderdiğinizde veya integer olmayan bir sayı gönderdiğinizde hata döner.
478478

479479
`finally` ne olursa olsun süre ölçmeyi sonlandırmak için harika bir yerdir.
480480

@@ -514,16 +514,16 @@ Kodu çalıştırdığınızda `35` değeri girerseniz normal olarak `try` sonra
514514
Diğer bir deyişle, fonksiyondan çıkmanın iki yolu verdir. Bunlar `return` veya `throw` olabilir. `finally` ise bunların ikisini de idare edebilir.
515515

516516

517-
```smart header="Değişkenler `try..catch..finally` içerisinde yereldir"
517+
```smart header="Değişkenler `try...catch...finally` içerisinde yereldir"
518518

519-
Dikkat ederseniz `result` ve `diff` değişkenleri `try..catch`'den *önce* tanımlanmışlardır.
519+
Dikkat ederseniz `result` ve `diff` değişkenleri `try...catch`'den *önce* tanımlanmışlardır.
520520

521521
Diğer türlü `let` `{...}` bloğunun içerisinde olsaydı, sadece parantez içerisinde görünür olurdu.
522522
```
523523
524524
````smart header="`finally` ve `return`"
525525
526-
Finally kelimesi `try..catch`'den her türlü çıkış ile çalışır. Bu doğrudan `return` için de geçerlidir.
526+
Finally kelimesi `try...catch`'den her türlü çıkış ile çalışır. Bu doğrudan `return` için de geçerlidir.
527527
528528
Aşağıdaki örnekte `try` içerisinde `return` bulunmaktadır. Bu durumda `finally` sonuç dış koda iletilmeden önce çalışır.
529529
@@ -550,7 +550,7 @@ alert( func() ); // önce finally içerisindeki alert çalışır sonra bu.
550550
551551
````smart header="`try..finally`"
552552
553-
`catch` olmadan hazırlanan `try..finally` yapısı da kullışlıdır. Bunu henelde hatayı o anda idare etmek istemediğimizde kullanırız, bunun ile birlikte başladığımız işlemin bittiğini de garanti altına almak isteriz.
553+
`catch` olmadan hazırlanan `try..finally` yapısı da kullanışlıdır. Bunu genelde hatayı o anda idare etmek istemediğimizde kullanırız, bununla birlikte başladığımız işlemin bittiğini de garanti altına almak isteriz.
554554
555555
```js
556556
function func() {
@@ -571,7 +571,7 @@ Yukarıdaki kodda `try` içerisinde olacak herhangi bir hata doğrudan dışarı
571571
Aşağıdaki bölüm aslında JavaScript çekirdeğinde bulunmamaktadır.
572572
```
573573

574-
Diyelim ki `try..catch`'in dışında bir hata ile karşılaştınız ve kodunuz sona erdi. Bu programlama hatası veya başka bir hata olabilir.
574+
Diyelim ki `try...catch`'in dışında bir hata ile karşılaştınız ve kodunuz sona erdi. Bu programlama hatası veya başka bir hata olabilir.
575575

576576
Böyle bir durumda ne yapmak lazım? Hataları loglayabilir, kullanıcıya bir hata gösterebiliriz.
577577

@@ -628,7 +628,7 @@ Aşağıdaki gibi çalışırlar:
628628

629629
## Özet
630630

631-
`try..catch` yapısı çalışma zamanlı hataları idare eder. Tam olarak kodu çalıştırmaya çalışır ve hataları yakalar.
631+
`try...catch` yapısı çalışma zamanlı hataları idare eder. Tam olarak kodu çalıştırmaya çalışır ve hataları yakalar.
632632

633633
Yazımı:
634634

@@ -642,7 +642,7 @@ try {
642642
// try/catch'den sonra her halükarda burayı çalıştır.
643643
}
644644
```
645-
`catch` bölümü veya `finally` bölümü olmadan da çalışır. `try..catch`, `try..finally`'de doğru kullanımdır.
645+
`catch` bölümü veya `finally` bölümü olmadan da çalışır. `try...catch`, `try..finally`'de doğru kullanımdır.
646646

647647
Hata objeleri şu özellikleri taşır:
648648

@@ -655,4 +655,4 @@ Hata objeleri şu özellikleri taşır:
655655

656656
Tekrar atma hata idaresi için temel bir desendir: bir `catch` bloğu her zaman hangi hataların geleceğini ve buna göre ne yapması gerektiğini bilmeli, eğer bilmiyorsa bu hatayı tekrar atmalıdır.
657657

658-
`try..catch` olmasa bile çoğu ortam "genel" bir hata idarecisi oluşturmamızı sağlar. Böylece gözden kaçan hatalar burada yakalanabilir. Tarayıcı için bu `window.onerror`'dur.
658+
`try...catch` olmasa bile çoğu ortam "genel" bir hata idarecisi oluşturmamızı sağlar. Böylece gözden kaçan hatalar burada yakalanabilir. Tarayıcı için bu `window.onerror`'dur.

0 commit comments

Comments
 (0)