try, except, finally - Python Dersleri (Tutorials)

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@elektroyazilim·
0.000 HBD
try, except, finally - Python Dersleri (Tutorials)
![object.jpg](https://cdn.steemitimages.com/DQmb9SAwWzX6XvD758tzXyxhUrmFP8vUQf9MkpbUpz3x6tm/object.jpg)

Merhabalar

Python programlama derslerinin bu bölümünde  "hata yakalama" konusuna kaldığımız yerden devam edeceğiz.

Bir önceki dersimizde _try except_ blok yapısından bahsetmiştik. Programlarımızda hata olabileceğini düşündüğümüz kod kısmını try bloğuna koyarken hata oluştuğunda yapmak istediklerimizi _except_ bloğu içerisine koyarız.

Örneğin :

![](https://cdn.steemitimages.com/DQmNMvdBN2aRTtYtv1QaRsEy9HvrtJiC223Tt42qzfj1Rg3/image.png)



_except_ bloğunu sadece _except_ anahtar kelimesi ile oluşturabildiğimiz gibi _except_ anahta kelimesi ile beraber hata isimlerini de verebiliriz.

Örneğin :

![](https://cdn.steemitimages.com/DQmdGkroGdkcS9vTo61CVAgPTakA3u1VrBNo8LYEwgZcR6k/image.png)

Hata ismini verdiğimizde _try_ bloğu içerisinde ismini verdiğimiz hata dışında bir hata oluşursa _except_ bloğuna geçmeyecektir. Böyle bir dezavantajı vardır.

Ayrıca _except_ bloklarını çoklu hata için ayrı ayrı tanımlayabiliriz.

Örneğin :

![](https://cdn.steemitimages.com/DQmaYhN9GZU7Qh1SvSPQKou2VS81K2m4VqiazrotHxBv2Cf/image.png)

Örnekte olduğu gibi _try_ bloğunda _ValueError_ hatası olduğunda bu bloğa, _ZeroDivisionError_ hatası olduğunda da bu isimdeki bloğa geçmektedir.

_try except_ yapısının bunların dışında da kullanımı bulunmaktadır.

Mesela iki ayrı hata bloğunu tek except bloğu içerisinde birleştirebiliriz :

![](https://cdn.steemitimages.com/DQmXYJWrEHxtpSRus4jF4qENkFVn3F8JhrnTRWGkU15yb8o/image.png)

Böyle bir uygulamada _try_ bloğu içerisinde _ValueError_ veya _ZeroDivisionError_ hatalarından herhangi biri oluşursa sonrasındaki _except_ bloğuna girilecek ve ekrana "Hata!" yazılacaktır.

## try, except, finally blokları

_try, except_ blokları, olası bir hata durumunda programın çakılmasını önlemektedir. Aynı zamanda kullanıcıya hata ile alakalı da bilgi verme imkanı tanımaktadır.

Bu iki bloğa ek olarak tanımlanan _finally_ bloğu ise hata olması veya olmaması durumunda mutlaka çalışacaktır. 

Mesela dosya işlemleri yapan bir uygulama düşünelim. Dosya okuma ya da yazma işlemlerinde hata olsun olmasın o dosyanın kapatılması gerekiyordur. Böylesi bir durum için _finally_ bloğunu kullanabiliriz. Dosya kapama komutlarını bu blok içerisine yerleştiririz.

Genel yapısı aşağıdaki gibidir :

![](https://cdn.steemitimages.com/DQmUMUAyDhS6M8cLtosKBbP5kRzAmpHezFXyhHaGRuYHdTV/image.png)

Bu uygulama üzerinden gidelim. İlk olarak hata almayacak şekilde değerler girerek kodu çalıştıralım. Çıktımız aşağıdaki gibidir :

![](https://cdn.steemitimages.com/DQmXn9QLmySfhjtrTosj3yo6DuYpfoEG7BLFYVXKDuBHRzx/image.png)

Şimdi de hatalı bir sayı girelim :

![](https://cdn.steemitimages.com/DQmShXXsNzthrY3hHk7NtkSi1UUMeyhCiTHqiPZPeBjG6cC/image.png)

Görüldüğü gibi her iki durumda da _finally_ bloğu çalıştı.

Şimdilik bu kadar.

Umarım faydalı bir çalışma olmuştur.

Teşekkürler.

![yesilayrca.png](https://cdn.steemitimages.com/DQmYZw2bhUomeivJwQ8CiLaTzXTbJPLd1PsSGdcoEE1DfKP/yesilayrca.png)

Kaynak belirtilmeyen görseller bana aittir. The pictures without source in the post is belong to me
👍 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,