Python'a adım atıyorum[Python3 kulübü]-4

Hacknology

Kıdemli Üye
25 Eki 2015
2,712
11
rm -rf /
Merhaba arkadaşlar öncelikle aldığım bir karardan bahsedeyim. Aynı yerlerde dönmemek için bu şekilde bitirdikten sonra ayrıntılı anlatıma geçeceğim, ileriki makaleler sesli ve videolu olacak. En son for dan bahsetmiştim. Şimdi hata ayıklamaya göz atacağız. Bazen programımız bize hata verir, ve bu hatalarda kullanıcı bazen hatanın ne demek istediğini anlayamaz, böyle bir durumda hata yakalamayı kullanırız. Hemen örneklerine geçelim:

try: expect:
Bakın mesela bir modül aktaralım içeriye, bunu işlemediğimizi biliyorum, fakat hiç zor bir durum değildir. "import" ile modül içe aktarırız. Neyse, zaten ilerde ayrıntılı olarak bahsedeceğim konudan uzaklaşmayalım. Bakın mesela bir modül adı uyduruyorum: "yakisiklihacknology" olsun. Bunu içe aktarmayı deneyelim

Örnek:
Kod:
>>> import yakisiklihackno
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import yakisiklihackno
ImportError: No module named 'yakisiklihackno'
>>>

Gördüğümüz gibi bu tip bir hata verdi, Peki biz bunu çok daha basite indirmek isteseydik? Şöyle küçük bir kod parçacığı yazdım.
Örnek:
Kod:
try:
    import yakisiklihackno
except:
    print("Böyle bir modül bulunmamaktadır")

Hemen çıktısına göz atalım:

Kod:
>>> 
 RESTART: C:/Users/x/AppData/Local/Programs/Python/Python35-32/hata.py 
Böyle bir modül bulunmamaktadır
>>>

Daha güzel değil mi? Bazen basit hatalarımız olur, mesela noktayı koymayı unuturuz ya da en basitinden hesap makinesinde elimiz bir harfe çarpar ve hatayı bir türlü bulamayız. Bu gibi durumlarda şu işimize yarayabilir:

Örnek:

Kod:
try:
    carpma = int(input("Çarpmak istediğiniz ilk sayıyı girin:"))
    carpma2 = int(input("Çarpmak istediğiniz ikinci sayıyı girin:"))
    print(çarpma * çarpma2)

except:
    print("Adam gibi sayı gir bana!")

Bunu çalıştırdığımızda bize şu çıktıyı verecektir:

Örnek:
Kod:
Çarpmak istediğiniz ilk sayıyı girin:24
Çarpmak istediğiniz ikinci sayıyı girin:b
Adam gibi sayı gir bana!
>>>



try: except: as

Evet az önceki yöntem bize hatayı gösteriyor, ama ne hatasını? Bunu bilmiyoruz, sadece hata varsa o çıktıyı veriyor. Eğer asıl hatayı da görmek istersek try..except..as den yararlanabiliriz. Az önceki kodu azıcık editleyelim:

Örnek:

Kod:
try:    
    carpma = int(input("Çarpmak istediğiniz ilk sayıyı girin:"))
    carpma2 = int(input("Çarpmak istediğiniz ikinci sayıyı girin:"))
    print(çarpma * çarpma2)

except ValueError as orcinal_hata:
    print("Adam gibi sayı gir bana!")
    print("Eğer tatlı küçük bir geliştiriciysen ve merakliysan al sana gercek hata:", orcinal_hata)

Bakalım bu sefer python bize nasıl bir tepki verecek

Kod:
Çarpmak istediğiniz ilk sayıyı girin:24
Çarpmak istediğiniz ikinci sayıyı girin:b
Adam gibi sayı gir bana!
Eğer tatlı küçük bir geliştiriciysen ve merakliysan al sana gercek hata: invalid literal for int() with base 10: 'b'
>>>

Güzel, değil mi? Bunun yanında else, finally de eklenebilir bunun sonuna ama onlara diğer makalemde değineceğim, şimdi şuna bir göz atalım. Biz kullanıcıya python da olmayan bir hata göstermek isteseydik ne yapacaktık? İşte karşınızda "raise"

raise metodu bu gibi durumda yardımımıza koşar. Hemen örnek bir kullanımla size bunu küçük bir kod parçacığıyla açayım.


Örnek:

Kod:
soru = input("İsminiz nedir: ")
if soru == "hacknology":
    raise Exception("Dünyanın en iyi coderı bu programda olamaz!")

else:
    print("Hoşgeldin!")

Hemen bunun çıktısına bir göz atalım:

Kod:
İsminiz nedir: hacknology
Traceback (most recent call last):
  File "C:/Users/Mustafa/AppData/Local/Programs/Python/Python35-32/hata.py", line 3, in <module>
    raise Exception("Dünyanın en iyi coderı bu programda olamaz!")
Exception: Dünyanın en iyi coderı bu programda olamaz!
>>>

Kullanıcıya istediğimiz hata mesajını da vermeyi öğrendik, bugünlük benden bu kadar :) sağlıcakla kalın

Umarım şimdiye kadar işlediklerim yararlı olmuştur, en kısa vakitte sesli anlatıma geçeceğim



 
Son düzenleme:

EASA

Katılımcı Üye
17 Tem 2016
841
0
Config.php
Sesli Ve Videolu Makalelerinizi Heycanla Bekliyorum

Gerçekten Kulubün Hakkını Veriyorsunuz
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.