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:
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:
Hemen çıktısına göz atalım:
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:
Bunu çalıştırdığımızda bize şu çıktıyı verecektir:
Örnek:
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:
Bakalım bu sefer python bize nasıl bir tepki verecek
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:
Hemen bunun çıktısına bir göz atalım:
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
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: