Yayınlama: 25 Mart 2023 
2. Çalışma Zamanı Hataları (Run-time Error)
Program kodlarının doğru göründüğü ancak çalıştırılması sırasında karşılaşılan hatalardır. Programcının ele almadığı bir takım aykırı durumlar ortaya çıktığında programın işletim sistemi tarafından kesilmesi ile ortaya çıkar. Bu tip hatalarda hata mesajı çoğunlukla çalışan işletim sisteminin dili ile verilir. Eğer bu tip hataları kullanıcı ele almışsa, program programcının vereceği mesajlarla ve uygun şekilde sonlandırılabilir. Bu tip hataların nerelerde ve hangi şartlarda ortaya çıkabileceğini bazen kestirmek zor olabilir.
Bazı yaygın çalışma zamanı hataları şunlardır:
a) Bellek Hataları:
Bellek hataları, programın belleğe yanlış bir şekilde erişmesi veya belleği yanlış kullanması sonucu oluşur. Bu hatalar, bellek sınırlarının aşılması, bellek sızıntıları veya bellek yönetimi hataları gibi nedenlerden kaynaklanabilir.Örnek:
DEFINT A-Z DIM personel(40200)Bu kodlar çalıştırıldığında Overflow (taşma) hatası oluşturacaktır.
  Çünkü QuickBasic dilinde bir dizi değişkenin eleman sayısı, dizi değişken
  boyutuna bağlı olarak belirlenen sınırların üzerinde olamaz. Bir dizi değişken
  elaman sayısı da dikkate alınarak bellekte en fazla 64K (65535 bayt) yer
  kaplayabilir.
    INTEGER değişkenin her bir elemanı bellekte 2 bayt yer kapladığı için
    azami eleman sayısı 65535/2 = 32767
  
  
  Önceki örnekte INTEGER değişkene 32767'den daha büyük bir değer girildiği için
  hata oluştu.
  Detay için QuickBasic programında
  Yardım / Contents / Data types ve Yardım / Contents / Limits to QuickBasic / Arrays sayfalarına bakınız.
b) Bölme Hatası:
Bir sayıyı sıfıra bölmeye çalıştığınızda ortaya çıkar. Bu hata, bir programın çalışmasını durdurur ve Division by zero(Sıfıra bölünme) hata mesajı verir.Örnek:
DEFINT A-Z a = 3 * 2 - 6 PRINT 5 / aKodlar çalıştırıldığında 3. satırda 5 rakamı sıfıra bölündüğü için Division by zero hatası oluşacaktır.
  Hataları kontrol altına almak için ON ERROR kullanılabilir. Aşağıdaki
  gibi.
DEFINT A-Z
ON ERROR GOTO hata 'Herhangi bir hata olursa hata satırına git
a = 3 * 2 - 6 ' a=0
PRINT 5 / a ' 5/0
a = 32768
PRINT "-Program sonu-"
END
hata:
IF ERR = 11 THEN
    PRINT "Sayı sıfıra bölünemez"
ELSEIF ERR = 6 THEN
    PRINT "Taşma hatası"
ELSE
    PRINT "Bilinmeyen hata!"
END IF
RESUME NEXT 'Sonraki satırdan devam et
c) Dosya İşleme Hataları:
Dosya işleme hataları, dosyaları açarken, okurken veya yazarken ortaya çıkan hatalardır. Bu hatalar, dosyanın bulunamaması, dosyanın okunamaması veya dosyaya yazma izni olmaması gibi nedenlerden kaynaklanabilir.d) Veri Tipi Hataları:
Veri tipi hataları, bir değişkenin beklenen veri tipine sahip olmadığı durumlarda ortaya çıkar. Örneğin, bir sayı değişkenine bir dize atamaya çalışmak gibi.Örnek:
DIM a AS INTEGER, b AS STRING a = "Merhaba" b = 20232. ve 3 satırlar Type Mismatch (Tür uyuşmazlığı) hatası verecektir.
e) Fonksiyon Hataları:
Bir fonksiyonun beklenen sonucu üretememesi veya fonksiyonun yanlış kullanılması sonucu oluşur.Örnek:
  Aşağıdaki programda hata kontrolü yapılmadığı için sayı girişinde negatif bir
  sayı veya 12'den büyük bir sayı girildiğinde hata oluşturacak ve fonksiyon
  sonuç üretmeyecektir.
  
  
  
    
      
  
  
DEFLNG A-Z
CLS : PRINT "Faktoriyel Hesaplama"
INPUT "Bir sayı girin: "; num
sonuc = Factorial(num)
PRINT num; "! = "; sonuc
FUNCTION Factorial (n)
    IF n = 0 THEN
        Factorial = 1
    ELSE
        Factorial = n * Factorial(n - 1)
    END IF
END FUNCTION
  | Önceki Bölüm: 28: Hata ayıklama-1 | Sonraki Bölüm: 30: Hata ayıklama-3 | 

Hiç yorum yok:
Yorum Gönder