Ana içeriğe atla

Python'da İstisna (Exception) ve Hata (Error) Yönetimi

Hatalar ve istisnalar programın çökmesine veya beklenmedik davranışlara yol açabilir; Python, kodun kararlılığını artırmak için sağlam bir araç setiyle birlikte gelir.
Güncel 3 Eki 2026  · 11 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Hatalar ve istisnalar beklenmedik davranışlara yol açabilir veya bir programın çalışmasını tamamen durdurabilir. Python, bu sorunları ele almak ve kodun sağlamlığını artırmak için çeşitli işlevler ve mekanizmalar sunar. Bu eğitimde, örneklerle birlikte farklı hata türlerini ve yerleşik işlevleri öğreneceğiz. 

  • Hata (error), genellikle çalışma zamanında toparlanılamayan, hatalı sözdizimi veya yanlış girinti gibi kritik bir problemdir.
  • İstisna (exception) ise, normal program akışını bozan ancak yakalanıp yönetilebilen bir çalışma zamanı olayıdır; böylece program devam edebilir.

İstisnalar çalışma zamanında ortaya çıkarken, SyntaxError ve IndentationError gibi bazı hatalar, program çalışmadan önce ayrıştırıcı tarafından yakalanır.

Basitçe söylemek gerekirse, hata normal bir uygulamanın yakalamaması gereken kritik bir sorundur; istisna ise bir programın yakalaması gereken bir durumdur. 

Python'da try except else finally süreci

Farklı örneklere bakarak hatalar ve istisnalar hakkında daha fazla bilgi edinelim. Bunları kolayca çalıştırmak için, Python'un önceden kurulu olduğu ve tüm kod örneklerini içeren ücretsiz bir DataLab çalışma defteri oluşturabilirsiniz.

Python'da Hatalar

İşte, fonksiyon dışında bir return ifadesinin anlamsız olduğu bir sözdizimi hatası örneği. Programda hataları ele almamalıyız. Bunun yerine, string döndüren bir fonksiyon oluşturmalıyız. 

return "DataCamp"
Input In [1]
    return "DataCamp"
    ^
SyntaxError: 'return' outside function

Fonksiyonu oluşturduk ancak girintileme hatalı. Girintileme hatalarını çalışma zamanında ele almamalıyız. Bunu elle düzeltebilir veya kod biçimlendirme araçları kullanabiliriz.

def fun():
return "DataCamp"    
Input In [2]
    return "DataCamp"
    ^
IndentationError: expected an indented block

Python'da İstisnalar

Bir ZeroDivisionError (Exception) ile karşılaştık. Bunu çalışma zamanında try ve except bloklarını kullanarak ele alabiliriz.

test = 1/0
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
Input In [4], in <cell line: 1>()
----> 1 test = 1/0

ZeroDivisionError: division by zero

NameError istisnaları, bir değişken bulunamadığında oldukça yaygındır. İstisnayı, değişkeni değiştirerek veya bir uyarı yazarak da ele alabiliriz. 

y = test
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Input In [5], in <cell line: 1>()
----> 1 y = test

NameError

Yerleşik Python İstisnaları

Varsayılan Python istisnalarının açıklamalarıyla birlikte listesi şöyledir:

  1. AssertionError: assert ifadesi başarısız olduğunda fırlatılır.

  2. EOFError: input() işlevi dosya sonu durumuyla karşılaştığında fırlatılır.

  3. AttributeError: öznitelik ataması veya başvurusu başarısız olduğunda fırlatılır.

  4. TabError: girintilemeler tutarsız sekme veya boşluklardan oluştuğunda fırlatılır. 

  5. ImportError: modül içe aktarma başarısız olduğunda fırlatılır. 

  6. IndexError: bir dizinin indeksi aralık dışında olduğunda oluşur.

  7. KeyboardInterrupt: kullanıcı kesme tuşlarına (Ctrl + C veya Delete) bastığında fırlatılır.

  8. RuntimeError: bir hata hiçbir kategoriye girmediğinde oluşur. 

  9. NameError: bir değişken yerel veya global kapsamda bulunamadığında fırlatılır. 

  10. MemoryError: programların belleği tükendiğinde fırlatılır. 

  11. ValueError: bir işlem veya işlev doğru türde fakat yanlış değerde argüman aldığında oluşur. 

  12. ZeroDivisionError: bir değeri veya değişkeni sıfıra böldüğünüzde fırlatılır. 

  13. SyntaxError: Python sözdizimi yanlış olduğunda ayrıştırıcı tarafından fırlatılır. 

  14. IndentationError: girintileme hatalı olduğunda oluşur.

  15. SystemError: yorumlayıcı dahili bir hata tespit ettiğinde fırlatılır.

Python'daki hata ve istisnaların tam listesini dokümantasyonu okuyarak bulabilirsiniz. 

Python istisnaları hakkında daha fazla bilgi edinmek için Python'da Nesne Yönelimli Programlama kursumuzu alın. Sınıflar oluşturmayı ve kodu yeniden kullanmak ile optimize etmek için kalıtım ve çok biçimliliği nasıl kullanacağınızı öğretecek.

try, except, else ve finally ile İstisna Yönetimi

Hatalar ve istisnaları öğrendikten sonra, bunları try, except, else ve finally bloklarını kullanarak ele almayı öğreneceğiz. 

Peki, onları ele almakla ne demek istiyoruz? Normal koşullarda bu hatalar kod yürütmeyi durdurur ve hata mesajını gösterir. Kararlı sistemler oluşturmak için bu hataları öngörmeli ve alternatif çözümler veya uyarı mesajlarıyla gelmeliyiz. 

Bu bölümde, her bloğun ne yaptığını ve sağlam kod yazmak için onları nasıl kullanabileceğimizi öğreneceğiz. 

try ve except deyimi 

Python'da istisnaları ele almanın en basit yolu try ve except bloklarını kullanmaktır.  

  1. try deyiminin altındaki kodu çalıştırın.

  2. Bir istisna fırlatıldığında, except deyiminin altındaki kodu yürütün. 

Hata veya istisnada durmak yerine, kodumuz alternatif çözümlere geçecek. 

Python'da try except deyimi

Basit örnek

İlk örnekte, tanımsız x değişkenini yazdırmayı deneyeceğiz. Normal koşullarda hata fırlatıp yürütmeyi durdurmalıdır; ancak try ve except bloğuyla akış davranışını değiştirebiliriz. 

  • try deyiminin altındaki kod çalışacak. 
  • x'in tanımlı olmadığını bildiğimiz için, except deyimi çalışacak ve uyarıyı yazdıracaktır.
try:
   print(x)
except:
   print("An exception has occurred!")
An exception has occurred!

Birden fazla except deyimi örneği

İkinci örnekte, birden fazla türde istisnayı ele almak için birden çok except deyimi kullanacağız.

  •  Bir ZeroDivisionError istisnası fırlatılırsa program "You cannot divide a value with zero." yazacaktır.
  • Diğer istisnalar ise “Something else went wrong.” yazacaktır.

Bu, kodun kırılmadan aynı anda birden fazla istisnayı ele alabilmesini sağlar. 

Not: İstisna türü belirtmeden çıplak bir except: kullanmaktan kaçının — bu, her şeyi yakalar; KeyboardInterrupt ve SystemExit dahil; bu da programınızın kapanmasını imkansız hale getirebilir ve ilgisiz hataları gizleyebilir. Her zaman beklediğiniz belirli istisnayı yakalayın, örneğin except ZeroDivisionError:.

try:
   print(1/0)
        except ZeroDivisionError:
   print("You cannot divide a value with zero")
except:
   print("Something else went wrong")
You cannot divide a value with zero

Dosya yükleme örneği

Şimdi daha pratik bir örneğe bakalım. 

Aşağıdaki kodda bir CSV dosyası okuyoruz ve FileNotFoundError istisnası fırlatıldığında, kod hatayı ve data.csv dosyası hakkında ek bir mesaj yazdıracaktır. 

Evet, yürütmeyi kesmeden varsayılan hata mesajlarını yazdırabiliriz. 

try:
   with open('data.csv') as file:
       read_data = file.read()
except FileNotFoundError as fnf_error:
   print(fnf_error)
   print("Explanation: We cannot load the 'data.csv' file")
[Errno 2] No such file or directory: 'data.csv'
Explanation: We cannot load the 'data.csv' file

else yan tümcesiyle try

try ve except'i öğrendik; şimdi de else deyimini öğreneceğiz.

try deyimi bir istisna fırlatmadığında, kod else bloğuna girer. Bu, betiğinizin bir bölümünün istisna üreteceğini beklediğinizde bir çare ya da geri dönüş seçeneğidir. Genellikle, belirli hataların gizlenmesini istemediğiniz kısa bir kurulum veya doğrulama bölümünde kullanılır. 

Not: Try-except bloğunda, tüm except deyimlerinden sonra else'i kullanabilirsiniz. 

Python'da else yan tümcesiyle try

Basit örnek

ZeroDivisionError örneğine else deyimini ekliyoruz. Görüldüğü gibi, istisna olmadığında else altındaki print işlevi çalışır ve sonucu gösterir. 

try:
   result = 1/3
except ZeroDivisionError as err:
   print(err)
else:
   print(f"Your answer is {result}")
Your answer is 0.3333333333333333

else ile IndexError örneği

Basit bir fonksiyon oluşturup çeşitli senaryolarda test ederek daha fazlasını öğrenelim. 

find_nth_value() fonksiyonu argüman olarak x (liste) ve n (indis numarası) alır. IndexError istisnasını ele almak için try, except ve else bloğu oluşturduk. 

x = [5,8,9,13]

def find_nth_value(x,n):
    try:
        result = x[n]
    except IndexError as err:
        print(err)
    else:
        print("Your answer is ", result)

x listesinde dört değer var ve bunları 6. ve 2. indis için test edeceğiz. 

# Testing
find_nth_value(x,6)
find_nth_value(x,2)
  • n=6 iken IndexError istisnası fırlatıldı ve varsayılan “list index out of range” hata mesajını gördük. 
  • n=2 iken istisna fırlatılmadı ve fonksiyon else altındaki sonucu yazdırdı. 
list index out of range
Your answer is  9

Python'da finally anahtar sözcüğü

try-except bloğunda finally anahtar sözcüğü, istisna olsa da olmasa da her zaman yürütülür. finally bloğu, bir istisna fırlatılmış veya yakalanmış olsun olmasın, her zaman try, except ve else'den sonra çalışır. Kaynakları temizlemede ve nesneleri kapatmada, özellikle dosyaları kapatmada oldukça kullanışlıdır.

Python'da finally anahtar sözcüğü

divide fonksiyonu, ZeroDivisionError istisnalarını ele almak ve istisna olmadığında sonucu göstermek için oluşturulmuştur. Sonuç ne olursa olsun, her zaman finally çalışacak ve yeşil renkte “Code by DataCamp” yazacaktır.

def divide(x,y):
    try:
        result = x/y
    except ZeroDivisionError:
        print("Please change 'y' argument to non-zero value")
    except:
        print("Something went wrong")
    else:
        print(f"Your answer is {result}")
    finally:
        print("\033[92m Code by DataCamp\033[00m")

İlk testte 1'i 0'a bölüyoruz; bu da ZeroDivisionError istisnasını fırlatmalı ve mesajı yazdırmalıdır. Görüldüğü gibi hata mesajından sonra ek bir satırımız var. 

divide(1,0)
Please change 'y' argument to non-zero value
 Code by DataCamp

Geçerli girdi eklediğimizde, else ve finally blokları çalıştırılarak sonuç görüntülenir.

divide(3,4)
Your answer is 0.75
 Code by DataCamp

Tam sayı yerine ikinci argüman olarak bir string ekledik; bu da ZeroDivisionError'dan farklı bir istisna ve farklı bir mesaj fırlattı. 

divide(1,'g')
Something went wrong
 Code by DataCamp

Üç senaryonun hepsinde ortak bir şey var. Kod her zaman finally deyimi altındaki print işlevini çalıştırıyor.

Python'a yeniyseniz ve gerçek bir programcı gibi kod yazmak istiyorsanız, Python Programming yetenek yolumuzu deneyin. Verimli kod yazmayı, Python fonksiyonlarını, yazılım mühendisliğini, birim testlerini ve nesne yönelimli programlamayı öğreneceksiniz. 

Python'da İç İçe (Nested) İstisna Yönetimi

Birden fazla istisnayı art arda ele alacak şekilde programı hazırladığımızda iç içe istisna yönetimine ihtiyaç duyarız. Örneğin, else deyimi altında başka bir try-except bloğu ekleyebiliriz. Yani ilk deyim bir istisna fırlatmazsa, kodun diğer yarısıyla ikinci deyimi kontrol edebilirsiniz. 

divide fonksiyonunu değiştirme

Önceki örnekteki divide fonksiyonunu değiştirdik ve else deyimi altında iç içe bir try-except bloğu ekledik. Böylece, bir AttributeError yoksa else çalışacak ve yeni kodu ZeroDivisionError istisnasına karşı kontrol edecektir.

def divide(x,y):
    
    try:
        value = 50
        x.append(value)
    
    except AttributeError as atr_err:
        print(atr_err)
        
    else:
        try:
            result = [i / y for i in x]
            print( result )
 except ZeroDivisionError:
            print("Please change 'y' argument to non-zero value")

    finally:
        print("\033[92m Code by DataCamp\033[00m")

İlk senaryoda, dört değerli bir x listesi ve payda olarak 3 veriyoruz. Betik listeye 50 ekleyecek, listedeki her bir değeri 3'e bölecek ve sonucu gösterecektir. 

x = [40,65,70,87]
divide(x,3)

Fonksiyon herhangi bir istisna fırlatmadan başarıyla yürütüldü.

[13.333333333333334, 21.666666666666668, 23.333333333333332, 29.0, 16.666666666666668]
 Code by DataCamp

Liste yerine ilk argümana bir tam sayı verdik ve bu da AttributeError fırlattı.

divide(4,3)
'int' object has no attribute 'append'
 Code by DataCamp

Son senaryoda, listeyi verdik ancak ikinci argüman 0 olduğundan else deyimi altında ZeroDivisionError istisnası fırlatıldı. 

divide(x,0)
Please change 'y' argument to non-zero value
 Code by DataCamp

Dosya düzenleme örneği

Dosya yükleme, metin yazma ve dosyayı kapatma gibi daha pratik örneklere bakalım. 

file_editor() fonksiyonu şunları yapacak:

  • open() işlevi için FileNotFoundError istisnasını kontrol eder.
  • Dıştaki istisna fırlatılmazsa, write() işlevi istisnasını kontrol eder.
  • Ne olursa olsun, dosyayı açtıktan sonra finally deyimini çalıştırarak dosyayı kapatır. 
  • Dıştaki try deyimi istisna fırlatırsa, geçersiz dosya yolu ile hata mesajını döndürür. 
def file_editor(path,text):
    try:
      data = open(path)

      try:
        data.write(text)

      except:
        print("Unable to write the data. Please add an append: 'a' or write: 'w' parameter to the open() function.")

      finally:
        data.close()

    except:
      print(f"{path} file is not found!!")

İlk senaryoda dosya yolunu ve metni sağlıyoruz.

path = "data.txt"
text = "DataLab: Share your data analysis in a cloud-based environment--no installation required."

file_editor(path,text)

Dıştaki istisna fırlatıldı. 

data.txt file is not found!!

Dosya bulunamadı istisnasını çözmek için Linux echo komutunu kullanarak data.txt dosyası oluşturmalıyız. 

!echo "File by DataCamp" > "data.txt"

Workspace'te dosya düzenleme

Ardından file_editor() fonksiyonunu tekrar çalıştırın.

file_editor(path,text)

write() işlevi metni ekleyemediği için içteki istisna fırlatıldı.

Unable to write the data. Please add an append: 'a' or write: 'w' parameter to the open() function.

Bu sorunu çözmek için üçüncü satırı data = open(path) ifadesinden data = open(path, 'a') ifadesine değiştirmemiz gerekir. Bu, yeni metni dosyaya eklememize izin verecektir. 

Fonksiyonu tekrar çalıştırdıktan sonra, metni dosyaya başarıyla ekledik. 

file_editor(path,text)

Workspace'te dosya düzenleme ekran görüntüsü

İç içe istisna yönetimi önerilmez; çünkü istisna yönetimini daha karmaşık hale getirir. Geliştiriciler, basit sıralı istisna yönetimi oluşturmak için birden fazla try-except bloğu kullanır. 

Not: try veya except deyimi altında da iç içe bir try-except bloğu ekleyebilirsiniz. Bu tamamen gereksinimlerinize bağlıdır. 

Python'da İstisna Fırlatma (Raising Exceptions)

İstisnaları yakalamanın ötesinde, raise anahtar sözcüğünü kullanarak onları bilerek fırlatabilirsiniz. Bu, iş kurallarını dayatmak veya girdi doğrulaması yapmak için kullanışlıdır. Aşağı yönde daha zor ayıklanabilir bir hataya yol açmadan önce bir şeylerin yanlış olduğuna dair bir sinyal sağlar.

Bir istisna fırlatmak için, raise anahtar sözcüğünü, ardından bir istisna adı gelecek şekilde kullanmamız gerekir. 

ValueError fırlatma örneği

if/else deyiminde raise anahtar sözcüğü ekleyerek basitçe istisna fırlatabiliriz. 

Örnekte, değer 1.000'i aşarsa ValueError fırlatıyoruz. Değeri 2.000 olarak değiştirdik; bu da if deyimini TRUE yaparak özel mesajla ValueError fırlatmasına neden oldu. Özel hata mesajı, sorunu hızlıca anlamanıza yardımcı olur. 

value = 2_000
if value > 1_000:   
    # raise the ValueError
    raise ValueError("Please add a value lower than 1,000")
else:
    print("Congratulations! You are the winner!!")
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)

----> 4     raise ValueError("Please add a value lower than 1,000")
      5 else:
      6     print("Congratulations! You are the winner!!")

ValueError: Please add a value lower than 1,000

İstisna fırlatma örneği

Koşul sağlanırsa herhangi bir yerleşik Python istisnasını da fırlatabiliriz. Bizim durumumuzda, hata mesajıyla genel bir Exception fırlattık.

if value > 1_000:   
    # raise the Exception
    raise Exception("Please add a value lower than 1,000")
else:
    print("Congratulations! You are the winner!!")
---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
----> 3     raise Exception("Please add a value lower than 1,000")
      4 else:
      5     print("Congratulations! You are the winner!!")

Exception: Please add a value lower than 1,000

Fırlatılan istisnayı ele alma örneği

Kendi özel istisnamızı oluşturabilir ve try-except bloğunu kullanarak istisnayı ele alabiliriz. 

Örnekte, try deyimi altına bir value error örneği ekledik.  

Peki nasıl çalışacak? İstisna fırlatıp programı sonlandırmak yerine, sağladığımız hata mesajını görüntüleyecek.

value = 2_000
try:
    if value > 1_000:
          
        # raise the ValueError
        raise ValueError("Please add a value lower than 1,000")
    else:
        print("Congratulations! You are the winner!!")
              
# if false then raise the value error
except ValueError as e:
        print(e)

Bu tür istisna yönetimi, Python tarafından kapsanmayan ve uygulamanıza özgü gereksinimlere dair hatalara hazırlanmanıza yardımcı olur. 

Please add a value lower than 1,000

raise ... from ile istisna zincirleme

Bağımsız istisnalar fırlatmanın ötesinde, raise ... from kullanarak istisnaları zincirleyebilirsiniz. Bu, orijinal istisnayı bağlam olarak korur ve bir hatanın başka bir hataya neden olduğu durumlarda iz sürümlerini çok daha anlaşılır hale getirir.

try:
    open("config.json")
except FileNotFoundError as e:
    raise RuntimeError("App failed to start: config file missing") from e
FileNotFoundError: [Errno 2] No such file or directory: 'config.json'

The above exception was the direct cause of the following exception:

RuntimeError: App failed to start: config file missing

from e kısmı, yeni istisnanın __cause__ özniteliğini ayarlar; böylece iz sürümünü okuyan herkes tam olarak neyin tetiklediğini görebilir. Bu, istisnaların kodun birden fazla katmanından geçtiği daha büyük uygulamalarda özellikle kullanışlıdır.

İstisna Yönetimi için Python 3.10 - 3.13'te Neler Yeni?

Bu blog yazısı ilk yazıldığından beri 3.10 ve 3.11 gibi daha yeni Python sürümlerine önemli yenilikler eklendi:

1. Python 3.10'da yapısal desen eşleştirme (structural pattern matching)

Python 3.10, match deyiminde hata türlerini eşleştirerek istisnaları daha sade biçimde ele almak için kullanılabilen yapısal desen eşleştirmeyi tanıttı. Bu, birden fazla istisna türüyle daha okunaklı şekilde uğraşırken özellikle yararlıdır. Örnek:

try:
    result = 1 / 0
except Exception as e:
    match e:
        case ZeroDivisionError():
            print("You cannot divide by zero.")
        case NameError():
            print("Variable not defined.")
        case _:
            print("An unexpected error occurred.")

2. İz sürümlerinde daha ince taneli hata konumları (Python 3.11)

Python 3.11'de iz sürümleri artık tam hata konumlarını göstererek istisnaların hata ayıklamasını kolaylaştırıyor.

Python 3.11 öncesi:

value = (1 + 2) * (3 / 0)
ZeroDivisionError: division by zero

Python 3.11 ile iz sürümleri, istisnaya neden olan alt ifadeyi tam olarak işaretler:

ZeroDivisionError: division by zero
       (1 + 2) * (3 / 0)
                      ^

3. İstisna grupları ve except* (Python 3.11)

Python 3.11, except* kullanarak tek bir blokta birden çok istisnayı ele almak için istisna gruplarını tanıttı. Bu, eşzamanlı olmayan kodu yönetmek veya birden fazla istisnanın fırlatılabileceği senaryolar için kullanışlıdır. Örnek:

try:
    raise ExceptionGroup("Multiple errors", [ValueError("Bad value"), TypeError("Bad type")])
except* ValueError as ve:
    print(f"Handling ValueError: {ve}")
except* TypeError as te:
    print(f"Handling TypeError: {te}")

4. İstisnalar için add_note yöntemi (Python 3.11)

İstisnalar artık geliştiricilerin daha iyi hata ayıklama için istisnalara özel notlar eklemesine olanak tanıyan bir add_note() yöntemine sahip. Örnek:

try:
    raise ValueError("Invalid input")
except ValueError as e:
    e.add_note("This happened while processing user input.")
    e.add_note("Consider validating input before processing.")
    raise
ValueError: Invalid input
Notes:
- This happened while processing user input.
- Consider validating input before processing.

5. PEP 654: İç içe istisnaların daha iyi ele alınması 

İstisna gruplarıyla, iç içe istisnaların hata ayıklaması ve ele alınması artık daha kolay; özellikle çoklu işlem veya eşzamanlı olmayan görevler gibi karmaşık iş akışlarında.

6. Geliştirilmiş hata mesajları (Python 3.12)

Python 3.12, hata mesajlarını daha spesifik ve eyleme dönük hale getirme yönündeki uzun soluklu çabayı sürdürdü. Örneğin, NameError mesajları artık kapsamda benzer isimli değişkenleri önerebiliyor; yaygın türlerdeki öznitelik hataları ise daha hedefli ipuçları veriyor:

# Python 3.12+
my_list = [1, 2, 3]
my_list.appendd(4)
AttributeError: 'list' object has no attribute 'appendd'. Did you mean: 'append'?

7. Renklendirilmiş iz sürümleri (Python 3.13)

Python 3.13, etkileşimli yorumlayıcıda varsayılan olarak renklendirilmiş iz sürümlerini tanıttı. Hata türleri, satır numaraları ve mesajlar artık farklı renklerle vurgulanıyor; özellikle birden çok zincirlenmiş istisnayı içeren uzun iz sürümlerinde neyin yanlış gittiğini taramak ve anlamak belirgin şekilde hızlandı.

Sonuç

Hem birim testleri hem de istisna yönetimi, kodunuzu üretime hazır ve hataya dayanıklı hale getiren Python programlamanın temel parçalarıdır. Bu eğitimde Python'da istisnalar ve hatalar ile bunların nasıl ele alınacağını öğrendik. Ayrıca, karmaşık iç içe try-except bloklarını ve gereksinimlere göre özel istisna blokları oluşturmayı da gördük.  

Bu araçlar ve mekanizmalar gereklidir; ancak işin çoğu basit try ve except bloklarıyla yapılır. try, kodun fırlattığı istisnaları arar; except ise bu istisnaları ele alır. 

Eğer bu kafa karıştırıcı geldiyse ve nereden başlayacağınızı bilmiyorsanız, kapsamları, lambda fonksiyonlarını ve hata yönetimini anlamak için Introduction to Functions in Python kursumuzu tamamlayın. Ayrıca, kariyer becerileri kazanmak ve profesyonel bir Python geliştiricisi olmak için Python Programmer kariyer yoluna da kaydolabilirsiniz. 


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Sertifikalı bir veri bilimcisi olarak, yenilikçi makine öğrenimi uygulamaları oluşturmak için en son teknolojileri kullanmaya büyük ilgi duyuyorum. Konuşma tanıma, veri analizi ve raporlama, MLOps, konuşma yapay zekası ve NLP alanlarında güçlü bir geçmişe sahip olarak, gerçek bir etki yaratabilecek akıllı sistemler geliştirme becerilerimi geliştirdim. Teknik uzmanlığımın yanı sıra, karmaşık kavramları açık ve özlü bir dille ifade etme yeteneğine sahip, becerikli bir iletişimciyim. Sonuç olarak, veri bilimi konusunda aranan bir blog yazarı oldum ve giderek büyüyen veri profesyonelleri topluluğuyla görüşlerimi ve deneyimlerimi paylaşıyorum. Şu anda, içerik oluşturma ve düzenlemeye odaklanıyorum. Büyük dil modelleriyle çalışarak, hem işletmelerin hem de bireylerin verilerinden en iyi şekilde yararlanmalarına yardımcı olabilecek güçlü ve ilgi çekici içerikler geliştiriyorum.

FAQs

Python'da bir hata (error) ile istisna (exception) arasındaki fark nedir?

Python'da hata, programın devam etmesini engelleyen daha ciddi bir sorundur; örneğin kod yapısının yanlış olduğunu gösteren bir sözdizimi hatası gibi. Öte yandan istisna, programın normal akışını kesintiye uğratan ancak try-except bloklarıyla program içinde ele alınabilen bir durumdur; böylece program çalışmayı sürdürebilir.

Tek bir try-except bloğunda birden çok istisna yakalanabilir mi?

Evet, Python tek bir try-except bloğunda birden çok istisnayı, istisna türlerini bir demet olarak belirterek yakalamaya izin verir. Örneğin: except (TypeError, ValueError):. Bu, aynı blokta bir TypeError ya da bir ValueError durumunu ele alacaktır.

Python'da özel bir istisna nasıl oluşturulur?

Özel bir istisna, yerleşik Exception sınıfından miras alan yeni bir sınıf tanımlanarak oluşturulabilir. Örneğin:

class MyCustomError(Exception):
    pass

Bir try-except yapısında else bloğunun amacı nedir?

 else bloğu, try bloğu bir istisna fırlatmazsa yürütülür. Bu, try bloğu başarılı olduğunda yalnızca çalıştırılması gereken kod için yararlıdır; böylece kod temiz kalır ve hata yönetimi normal yürütme yolundan ayrılır.

İstisna yönetiminde finally bloğu neden önemlidir?

 finally bloğu, bir istisna fırlatılıp fırlatılmamasından bağımsız olarak her zaman yürütülür. Genellikle dosyaların kapatılması veya kaynakların serbest bırakılması gibi temizleme eylemleri için kullanılır; böylece bu eylemler her koşulda yerine getirilir.

Python'da istisnaları nasıl bastırabilirsiniz?

İstisnaları, contextlib.suppress bağlam yöneticisini kullanarak bastırabilirsiniz. Bu, yok sayılması gereken istisna türlerini belirtmenize olanak tanır. Örneğin:

from contextlib import suppress
with suppress(FileNotFoundError):
    open('non_existent_file.txt')

Bir Python programında bir istisna yakalanmazsa ne olur?

Bir istisna yakalanmazsa çağrı yığınında (call stack) yukarı doğru yayılır ve ele alınmadan kalırsa programı sonlandırır; konsola, istisnanın nerede meydana geldiğini gösteren bir iz sürümü (traceback) yazdırır.

Bir istisna yakalandıktan sonra tekrar fırlatılabilir mi?

Evet, bir istisnayı raise ifadesini bir except bloğunda argümansız kullanarak yeniden fırlatabilirsiniz. Bu, bir istisnayı daha ileriye yayılmasına izin vermeden önce günlüğe kaydetmek veya başka eylemler yapmak istediğinizde kullanışlıdır.

Python'da tüm istisnaları ele almanın bir yolu var mı?

Çıplak bir except: yan tümcesiyle tüm istisnaları yakalamak mümkün olsa da, beklenmedik istisnaları da yakalayabileceği ve hata ayıklamayı zorlaştırabileceği için genellikle önerilmez. Belirli istisnaları yakalamak veya except Exception: kullanmak daha iyidir; böylece SystemExit ve KeyboardInterrupt gibi sistemden çıkışa yol açan istisnaları yakalamaktan kaçınmış olursunuz.

Meydana gelme zamanları açısından, sözdizimi hataları ile çalışma zamanı istisnalarını nasıl ayırt edersiniz?

Sözdizimi hataları derleme zamanında tespit edilir; yani Python yorumlayıcısı program çalışmaya başlamadan bu hataları yakalar. Çalışma zamanı istisnaları ise, yorumlayıcının sıfıra bölme veya var olmayan bir değişkene erişme gibi gerçekleştiremeyeceği bir işlemle karşılaştığında, program yürütülürken meydana gelir.

Konular
Python

Bu kurslarla Python hakkında daha fazlasını öğrenin!

Kurs

Python’a Giriş

4 sa
7.1M
Python ile veri analizi temellerini sadece dört saatte öğrenin. Bu çevrimiçi kurs, Python arayüzünü tanıtacak ve popüler paketleri keşfedecektir.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör