کارکردن لەگەڵ هەڵەکان (Error Handling)
پایثۆن وانەی حەوتەم: چۆنێتی مامەڵەکردن لەگەڵ هەڵە یان ئیستسناء لە بەرنامەکاندا.
فێربوونی پایتۆن
February 5, 2025

وانە حەوتەم: کارکردن لەگەڵ هەڵەکان (Error Handling)
بەخێربێیت بۆ وانە حەوتەم لە سلسلەی فێربوونی زمانی پایثۆن! لەم وانەیەدا، ئێمە بە تێکچوونی چۆنیەتی کارکردن لەگەڵ هەڵەکان یان استثناکان (Exceptions) دەچینە سەر. کارکردن لەگەڵ هەڵەکان بەشێکی زۆر گرنگە لە بەرنامەنووسیدا، چونکە یارمەتی ئەوەی دەدات کە کۆنتڕۆڵی تەواوی ئەوەت بدەیت کە چۆن بەرنامەکە ئیشی لێکردەوە کاتێک کێشەیەکی بەپێشاپێ نەدروست بوو لە کاتی ڕوولەکردنی بەرنامەکە.
1. استثناکان (Exceptions) چییە؟
کاتێک هەڵەیەک لە کاتی ڕوولەکردنی بەرنامەی پایثۆن ڕوودەدات، استثناء (Exception) دروست دەبێت. ئەگەر ئەم استثنایە بە شێوەی دروست نەکراوە شاردنەوە بکرێت، بەرنامەکە وەستێت و پەیامێکی هەڵە دەردەچێت.
نموونە:
ئەگەر ئەم کۆدە بەکاربهێنرێت، ئەم هەڵەیە دەردەچێت:
ZeroDivisionError: division by zero
جۆرە هەڵەکانی گشتی
- ZeroDivisionError: کاتێک بەسەر صفر بکرێت.
- TypeError: کاتێک جۆرێکی داتا بە شێوەیەکی هەڵە بەکاربێت.
- ValueError: کاتێک بەهایەکی نادروست تێپەڕێت.
- FileNotFoundError: کاتێک هەوڵدان بۆ کراوەکردنی پەڕگەیەکی بوونی نەبێت.
- IndexError: کاتێک هەوڵدان بۆ دەستگەیشتن بە فهرستێکی نەدروست لە لیست.
- KeyError: کاتێک هەوڵدان بۆ دەستگەیشتن بە کلیلێکی نەدروست لە فرهێنگ.
2. چۆنیەتی کارکردن لەگەڵ هەڵەکان بەکارهێنانی try و except
بۆ ڕەتکردنەوەی وەستاندنی بەرنامەکە کاتێک هەڵەیەک ڕوودەدات، ئێمە دەتوانین بەکاربێنین بنیاتی try و except . کۆدەکەی کە دەکات هەڵە ڕوودێت دەچێت لە ناو کتڵەکەی try ، و ئەگەر هەڵەیەک ڕوودێت، کۆدەکەی لە ناو کتڵەکەی except ڕوولەکرێت.
أ. شێوەپێدانی بنچینەیی
try:
# کۆدەکەی کە دەکات هەڵە ڕوودێت
x = 10 / 0
except ZeroDivisionError:
# کۆدەکەی کە ڕوولەکرێت ئەگەر هەڵە ڕوودێت
print("نابێت بەسەر صفر بکرێت!")
تێبینی: ئەگەر بەرنامەکەت پێویست بێت هەموو جۆرە هەڵەکان بە شێوەیەکی گشتی شاردنەوە بکرێن، ئێمە دەتوانین بەکاربێنین except تەنها.
try:
x = 10 / 0
except:
print("هەڵەیەک ڕوویدا!")
3. شاردنەوەی چەندین استثناء
ئێمە دەتوانین چەندین جۆرێک لە هەڵە بە شێوەی ڕاستەقینە شاردنەوە بکەین بە بەکارهێنانی چەند کتڵەی except .
try:
num = int(input("ژمارەیەک داخڵ بکە: "))
result = 10 / num
except ZeroDivisionError:
print("نابێت بەسەر صفر بکرێت!")
except ValueError:
print("پێویستە ژمارەیەکی باش داخڵ بکەیت!")
4. بەکارهێنانی else و finally
أ. کتڵەی else
کتڵەی else بۆ ڕوولەکردنی کۆدەکەی بەکاردێت ئەگەر هیچ هەڵەیەک لە کتڵەی try دا ڕوونەبوو.
try:
num = int(input("ژمارەیەک داخڵ بکە: "))
result = 10 / num
except ZeroDivisionError:
print("نابێت بەسەر صفر بکرێت!")
except ValueError:
print("پێویستە ژمارەیەکی باش داخڵ بکەیت!")
else:
print(f"ئەنجام: {result}")
ب. کتڵەی finally
کتڵەی finally بۆ ڕوولەکردنی کۆدەکەی بەکاردێت بە بێ پێویست بەوەی هەڵە ڕوودا یان نە. زۆرترین بەکارهێنانی ئەمە هەیە بۆ داخڵکردنی پەڕگەکان یان پاککردنی کەسروەکان.
try:
file = open("example.txt", "r")
content = file.read()
except FileNotFoundError:
print("پەڕگەکە بوونی نییە!")
finally:
file.close() # داخڵکردنی پەڕگە بە بێ پێویست بەوەی هەڵە ڕوودا یان نە
5. بەرزکردنەوەی استثناکان بە دەست بەکارهێنانی raise
ئێمە دەتوانین بە دەست خۆمان استثناکان بەرز بکەین بە بەکارهێنانی وشەی raise . ئەمە یارمەتی ئەوەی دەدات کە بەرنامەکە وەستانێت ئەگەر شەرطێک قوڵ نەبێت.
def check_age(age):
if age < 0:
raise ValueError("تەمەن نابێت کەمتر بێت لە سفر!")
elif age < 18:
print("تۆ منداڵیت.")
else:
print("تۆ بەرزە.")
try:
check_age(-5)
except ValueError as e:
print(e) # ئەنجام: تەمەن نابێت کەمتر بێت لە سفر!
6. کارەکانی کارا
کارەکانی ١: سەیرکردنی بوونی پەڕگە
import os
file_name = "example.txt"
try:
with open(file_name, "r") as file:
print(file.read())
except FileNotFoundError:
print(f"پەڕگەکە {file_name} بوونی نییە!")
کارەکانی ٢: سەیرکردنی داخڵکردنی بەکارهێنەر
try:
num = int(input("ژمارەیەک داخڵ بکە: "))
print(f"ژمارەکەی داخڵکراوەتەوە: {num}")
except ValueError:
print("پێویستە ژمارەیەکی باش داخڵ بکەیت!")
کارەکانی ٣: کارکردن لەگەڵ هەڵەکان لە لیستەکان
my_list = [1, 2, 3]
try:
print(my_list[5]) # فهرستی نەدروست
except IndexError:
print("فهرستی نەدروست لە لیستدا!")
7. پێشنیارەکان لەسەر کارکردن لەگەڵ هەڵەکان
-
بەکارهێنانی try و except بە ئاگادارییەوە:
مە هەرگیز try و except بەکارنەهێنە بۆ ڕەتکردنەوەی هەموو هەڵەکان. تەنها هەڵەکانی بەکاربێنە کە پێشبینی دەکەیت. -
دیاریکردنی جۆری استثناء:
هەوڵبدە هەموو جار جۆری استثناء بە شێوەی ڕاستەقینە دیاری بکەیت بە جیاتی بەکارهێنانی exceptی گشتی. -
بەکارهێنانی finally بۆ داخڵکردنی کەسروەکان:
ئەگەر بەکارهێنەر پەڕگەکان یان بنکەی داتاکان، بەکاربێنە finally بۆ دڵنیابوون لەوەی کە کەسروەکان داخڵکراونەتەوە تەنانەت ئەگەر هەڵەیەک ڕوودا. -
بەرزکردنەوەی هەڵەکانی باشەکان:
بەکاربێنە raise بۆ بەرزکردنەوەی هەڵەکانی دیاریکراو کاتێک پێویستە.
کۆتایی
لەم وانەیەدا، ئێمە فێر بووین چۆن هەڵەکان یان استثناکان لە پایثۆندا بەکاربێنرێن بە بەکارهێنانی try , except , else , و finally . ئەم مەرجانە زۆر گرنگن بۆ ئەوەی بەرنامەکانت باشتر و پایدارتر بن.
لە وانەی داهاتوودا، ئێمە بیردەردەچینەوە بۆ کارکردن لەگەڵ ماژولەکان (Modules) و چۆنیەتی بەکارهێنانیان بۆ دووبارە بەکارهێنانی کۆد و ڕێکخستنی بە شێوەی باشتر. بەردەوام بمێنە لە چارەسەرکردن و هیچ شک نەکە لە پرسینەوەی پرسیارەکانت ئەگەر پێویست بە یارمەتیت هەبێت!
🚀 ئێستاش ئەتوانیت بەردەوام بمێنە لە ڕێگایەکی راستەقینە بۆ بوونی بەرنامەنووسێکی پێشکەوتوو!
کۆمێنتەکان

هیچ کۆمێنتێک نییە
تکایە بچۆرە ژوورەوە بۆ ئەوەی کۆمێنتێک بنوسیت