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 - 6PRINT 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