Python dilindəki xətalar. Try və Except bloklarının işləmə prinsipi.

Mr Nasibovv
Pragmatech
Published in
4 min readAug 27, 2020

Proqramlaşdırma dillərində xətalar niyə yaranır?

Danılmazdır ki, hər bir proqramçının və ya bu sahəyə yeni başlayanların ən çox qarşılaşdığı və həll etmək üçün saatlarını ayırdığı xətalar proqramlaşdırma sahəsinin ayrılmaz komponentlerindən biridir. Bu xətalar əsasən proqramçının həmin dildə yeni şeylər yoxlaması zamanı yaransa da hər həll olunan xəta da proqramçının bilik və bacarıqlarını xətanın ağırlığı ilə düz mütənasib olaraq artmasına səbəb olur. Yaranan xəta növlərinin sayı hər bir proqramlaşdırma dilində fərqli sayda şaxələnsə də, bütün dillər üçün ümumi olan 3 xəta növü vardır: 1. Syntax Errors | 2. Runtime Errors | 3. Logical Errors

  1. Syntax Errors — Bu kimi xətalar proqramçının yazdığı kodun icra olunmamışdan əvvəlki mərhələdə, yəni compile olunan zaman(Interpreter dillərdə isə bu proses proqram icrasının birinci mərhələsində, parcing stage -də) aşkar olunan xətalardır. Bu xətalar ümumi olaraq compile-time error kateqoriyasına aiddir. Bu xətalar adətən yazılan kodun proqramlaşdırma dilinin sintaksisində hər hansı bir pozuntu olduğu zaman baş verir. Bildiyimiz kimi hər bir proqramlaşdırma dili yazılan zaman xüsusi qaydalar vardır ki bu qaydalara əməl edilmədikdə yazılan kod parçası tələblərə uymadığı üçün, xəta aradan qaldırılmadığı müddətcə icra olunmur. Bu kimi xətalar baş verdiyi zaman xəta verən sətrin nömrəsi terminalda əks olunur və xətanın aradan qaldırılması daha asan olur.
  2. Runtime Errors — Yazdığımız kodun sintaksisində hər hansı bir problemin olmaması proqramımızın səhvsiz icra ediləcəyi mənasına gəlmir. Yazılan kod parçası compile olunduqdan (və ya parcing stage -dən) sonra, yəni icra zamanı, xəta haqqında proqramçıya məlumat verib icra prosesini dayandırırsa, bu zaman runtime error baş verdiyi məlumdur. Bu növ xətaların yaranma səbəbləri müxtəlifdir. Lakin əksər hallarda bu xətaya poor programming səbəb olur. Poor programming deyilen anlayış proqramçının kodu yazarkən yaddaş məsələsində diqqətsizlik etdiyi üçün memory leak (məsələn əvvəlcədən 10 elementlik təyin olunmuş bi array-in içinə 20 element daxil etməyə çalışmaq) yaranmasıdır. Bundan başqa kompüterin komponentlerində zədə( əsasən hard disk), sistemdə virus və ya hər hansı zərərli proqram, proqramçının yazdığı kodun icrası zamanı bu tip xəta almağına səbəb ola bilər.
  3. Logical Errors — Bu tip xətalar adından da aydın olduğu kimi əvvəlcədən proqramçının planladığı işin icra məntiqinin kodlanma zamanı düzgün olaraq yazılmamasından əmələ gəlir. Bu xətalar bir başa olaraq proqramçının xətası olduğu üçün kodun sintaksisi düzgün olsa belə gözlənilən nəticə əldə olunmur. Məntiqi xətalar aşkarlanması ən çətin və vaxt aparan xətalardır. Buna səbəb kodun sintaksisinin düzgün olduğu üçün terminaıda heç bir xəta bildiriş məlumatı verilməməsi və proqramçının məcburi olaraq kodu sətirbəsətir analiz edib məntiqi səhvi tapmasıdır.
Python dilində ən sıx qarşılanan xətalar

Qeyd olunan hər 3 xəta bütün proqramlaşdırma dillərində olan ortaq xətalardır. Python dilində olan xəta və xəbərdarlıqlar yuxarıdakı şəkildən və ya buradan baxa bilərsiz.

Try və Except blokları nədir və nə üçün istifadə olunur?

Hamıya məlumdur ki, yazılan proqramların demək olar hamısı xüsusi bir qrup istifadəçilərin istifadəsi üçün tərtib olunur. Bu zaman da istifadəçilərdən müəyyən məlumatlar input olaraq alınır və bu inputlar hər zaman düzgün daxil olunmur. Yazılan proqramın düzgün işləməsi, daxil olunan inputların doğruluğunu təmin etmək və ən əsası xətalarla üzləşməmək üçün xüsusi kod blokları yazılır, digər bir sözlə validation anlayışından istifadə olunur. Bu kod bloklarının sayısının azalması və daha az kod sətri ilə daha səmərəli kodların tərtibi üçün Python dilində Error Handling prosesi üçün tryexcept blokları mövcuddur.

https://www.yazilimbilimi.org/python-exceptions-istisnalar-ve-istisna-yakalama/

Şəkildən də aydın görülə biləcəyi üzrə, xəta vermə ehtimalı olan kod parçası try-except sturukturunun try: hissəsində yazılır. İstifadəçinin səhv daxil etmə ehtimalına görə əvvəlcədən öngörülən xətaların adı, daha detallı bir əvvəlki şəkildə görə bilərsiz, except errorName: olaraq yazılır. Məsələn yuxardakı şəklimizdə kodda əgər istifadəçi ədəd yerinə hər hansı bir string vəya string+int qarışığı bir input verərsə o zaman ilk except bloku işə düşəcək və proqramın icrasını dayandırıb xəta bildirişi vermək əvəzinə istifadəçiyə məlumat verib yenidən yoxlaması üçün şans verəcək. İkinci except blokumuz da, bildiyiniz kimi sıfıra bölmə olmadığı üçün, əgər istifadəçi ikinci input olaraq sıfır daxil edərsə məlumat verici bir yazı ekrana çıxardıb istifadəçinin yenidən daxil etməsi üçün şərait yaradacaq.

Try-Except-Finally blokları əsasən fayllar üzərində yazma, oxuma və əlavə etmə əməliyyatlarını həyata keçirmək üçün istifadə olunduğunu internet üzərindəki nümunələrdən görə bilərik. Finally bloku, şəkildəki print funkasiyasının içindəki yazıdan da anlaya biləcəyimiz üzrə try blokunun içinə yerləşdirdiyimiz kod parçasında hər hansı bir xəta olub-olmamasından asılı olmayaraq blokun içindəki əmrləri sıra ilə icra edir.

Son olaraq qeyd etmək lazımdır ki Try-Except-Finally blokları Python dilinin proqramçıların işlərinin asandlaşdırmaqla yanaşı yazdıqları kodların daha oxuna bilən olmasını təmin etməsi üçün sunulan bir xüsusiyyətdir. Gələcək proyektlərdə istifadə olunarsa, oxuyucuların işini asantlaşdıracağı danılmazdır.

Mənbələr:

--

--