try, except, finally - Python Dersleri (Tutorials)

in #zzan5 years ago

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 :

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

Örneğin :

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 :

Ö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 :

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 :

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

Şimdi de hatalı bir sayı girelim :

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

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

Sort:  

You got a 96.40% upvote from @minnowvotes courtesy of @elektroyazilim!

You got a 22.24% upvote from @joeparys! Thank you for your support of our services. To continue your support, please follow and delegate Steem power to @joeparys for daily steem and steem dollar payouts!

The force is with you! You got a 40.71% upvote from @steemyoda courtesy of @elektroyazilim!

You got a 94.88% upvote from @luckyvotes courtesy of @elektroyazilim!

You got a 25.00% upvote from @whalecreator courtesy of @elektroyazilim! Delegate your Steem Power to earn 100% payouts.

Coin Marketplace

STEEM 0.20
TRX 0.13
JST 0.030
BTC 67271.13
ETH 3515.41
USDT 1.00
SBD 2.70