استثنای تعریف شده توسط کاربر در پایتون — ساده و جامع

عکس شاخص استثنای تعریف شده توسط کاربر

استثنای تعریف شده توسط کاربر در پایتون «User-defined exception in Python» برای مدیریت خطاهایی که در حین اجرای برنامه رخ می‌دهند استفاده می‌شوند. در پایتون استثناهای داخلی زیادی وجود دارد، گاهی ممکن است نیاز به ایجاد استثناهای خودمان داشته باشیم تا موقعیت‌های خاصی را که مختص برنامه‌مان هستند مدیریت کنیم. به این استثناها، استثنای تعریف شده توسط کاربر در پایتون می‌گویند. برای مدیریت خطاها و استثنای تعریف شده توسط کاربر در پایتون، مکانیزم مدیریت استثنا را با استفاده از بلوک‌های try و except انجام می دهیم.

مقدمه

استثنای تعریف شده توسط کاربر در پایتون یک ابزار قدرتمند است که به برنامه‌نویسان این امکان را می‌دهد تا شرایط خاص و خطاهای دلخواه خود را به صورت دقیق‌تر مدیریت کنند. در پایتون، استثناها به طور پیش‌فرض برای خطاهای مختلف مانند تقسیم بر صفر، دسترسی به ایندکس ناموجود در لیست و خطاهای ورودی و خروجی وجود دارند، اما گاهی اوقات نیاز به تعریف خطاهای خاص‌تر و ویژه برای برنامه‌های پیچیده‌تر داریم.

استثنای تعریف شده توسط کاربر در پایتون به ما این امکان را می‌دهد که خطاهای جدیدی را با نام‌ها و ویژگی‌های خاص خود ایجاد کنیم و به این ترتیب، برنامه‌نویسی «Programming» ما انعطاف‌پذیرتر و دقیق‌تر خواهد شد. این استثناها می‌توانند شامل پیام‌های خطای سفارشی «Custom error messages» باشند که به راحتی به شناسایی مشکلات خاص در کد کمک می‌کنند.

در پایتون، برای ایجاد یک استثنای جدید، از کلاس‌های استثنا که از کلاس پایه Exception ارث‌بری می‌کنند، استفاده می‌شود. این استثناها می‌توانند برای شرایط خاصی طراحی شوند که به طور معمول در استثناهای پیش‌فرض پایتون وجود ندارند، و به این ترتیب تجربه‌ای بهتر از مدیریت خطاها فراهم می‌آورند.

ایجاد استثنای تعریف شده توسط کاربر در پایتون

استثنای تعریف شده توسط کاربر در پایتون با تعریف یک کلاس جدید که از کلاس داخلی Exception پایتون یا یکی از زیرکلاس‌های آن ارث‌بری می‌کند، ایجاد می‌شوند. با این کار می‌توانیم پیام‌های خطای سفارشی ایجاد کنیم و خطاهای خاص را به روشی که برای برنامه‌مان منطقی است مدیریت کنیم.

مراحل ایجاد و استفاده از استثنای تعریف شده توسط کاربر در پایتون

  1. تعریف یک کلاس استثناء جدید: یک کلاس جدید ایجاد کنید که از کلاس Exception یا هر یک از زیرکلاس‌های آن ارث‌بری کند.
  2. برجسته کردن استثناء: از دستور raise برای برجسته کردن استثناء تعریف‌شده توسط کاربر استفاده کنید زمانی که یک شرایط خاص رخ دهد.
  3. مدیریت استثناء: از بلوک‌های try-except برای مدیریت استثناء تعریف‌شده توسط کاربر استفاده کنید.

مثال از یک استثنای تعریف شده توسط کاربر در پایتون :

# Step 1: Define a custom exception class
class InvalidAgeError(Exception):
    def __init__(self, age, msg="Age must be between 0 and 120"):
        self.age = age
        self.msg = msg
        super().__init__(self.msg)

    def __str__(self):
        return f'{self.age} -> {self.msg}'

# Step 2: Use the custom exception in your code
def set_age(age):
    if age < 0 or age > 120:
        raise InvalidAgeError(age)
    else:
        print(f"Age set to: {age}")

# Step 3: Handling the custom exception
try:
    set_age(150)  # This will raise the custom exception
except InvalidAgeError as e:
    print(e)

خروجی:

۱۵۰ -> Age must be between 0 and 120

کلاس InvalidAgeError از کلاس Exception ارث‌بری می‌کند. این کلاس یک متد __init__ دارد که یک سن و یک پیام اختیاری را می‌گیرد. متد __str__ یک رشته بازمی‌گرداند که هنگام چاپ استثنا نمایش داده می‌شود.

در تابع set_age بررسی می‌کنیم که آیا سن خارج از بازه معتبر (۰ تا ۱۲۰) است یا خیر. اگر این‌طور باشد، استثنا InvalidAgeError را برجسته می‌کنیم.

از بلوک try-except برای گرفتن و مدیریت InvalidAgeError استفاده می‌کنیم. وقتی این خطا برجسته می‌شود، پیام خطا چاپ می‌شود.

سفارشی‌سازی کلاس‌ های استثنا در پایتون

وقتی یک استثنا سفارشی ایجاد می‌کنیم، از کلاس داخلی Exception پایتون (یا یک زیرکلاس مانند ValueError، TypeError و غیره) ارث‌بری می‌کنیم. سپس می‌توانیم ویژگی‌ها، متدها یا منطق سفارشی خود را اضافه کنیم تا استثناء ما اطلاعات بیشتری فراهم کند.

# Step 1: Subclass the Exception class

class InvalidAgeError(Exception):
    def __init__(self, age, msg="Age must be between 0 and 120", error_code=1001):
        # Custom attributes
        self.age = age
        self.msg = msg
        self.error_code = error_code
        super().__init__(self.msg)  # Call the base class constructor

    # Step 2: Customize the string representation of the exception
    
    def __str__(self):
        return f"[Error Code {self.error_code}] {self.age} -> {self.msg}"

# Step 3: Raising the custom exception

def set_age(age):
    if age < 0 or age > 120:
        raise InvalidAgeError(age)
    else:
        print(f"Age set to: {age}")

# Step 4: Handling the custom exception with additional information

try:
    set_age(150)  # This will raise the custom exception
except InvalidAgeError as e:
    print(e)

خروجی:

[Error Code 1001] 150 -> Age must be between 0 and 120

متد __str__ بازنویسی شده است تا یک پیام خطای سفارشی هنگام چاپ استثنا ارائه دهد. این پیام شامل کد خطا و سن است که آن را بیشتر توضیحی می‌کند.
در تابع set_age، اگر سن نامعتبر باشد، استثنا سفارشی InvalidAgeError برجسته می‌شود. سپس استثنا در بلوک try-except گرفته می‌شود و پیام خطای سفارشی چاپ می‌شود.

چگونه از استثناهای استاندارد به‌عنوان کلاس پایه در پایتون استفاده کنیم؟

یک خطای زمان اجرا، کلاسی است که یک استثنا استاندارد است و زمانی برجسته می‌شود که یک خطای ایجادشده در هیچ کدام از دسته‌های موجود قرار نگیرد. این برنامه نشان می‌دهد چگونه از خطای زمان اجرا به‌عنوان کلاس پایه استفاده کنیم و خطای شبکه را به‌عنوان یک کلاس مشتق‌شده از آن تعریف کنیم. به همین صورت، می‌توان یک استثنا را از استثناهای استاندارد پایتون مشتق کرد.

# NetworkError has base RuntimeError and not Exception
class Networkerror(RuntimeError):
    def __init__(self, arg):
        self.args = arg

try:
    raise Networkerror("Error")

except Networkerror as e:
    print(e.args)

خروجی:

('E', 'r', 'r', 'o', 'r')

نتیجه‌گیری

استثنای تعریف‌شده توسط کاربر در پایتون به توسعه‌دهندگان این امکان را می‌دهند که خطاهایی را که به طور پیش‌فرض توسط پایتون شناسایی نمی‌شوند، شبیه‌سازی و مدیریت کنند. این قابلیت انعطاف‌پذیری بالایی را فراهم می‌کند و به برنامه‌نویسان اجازه می‌دهد که منطق خاص خود را برای مدیریت استثناء‌ها پیاده‌سازی کنند. با استفاده از این نوع استثناها، خطاها را می‌توان به‌صورت خاص‌تری شناسایی کرد و پیام‌های خطای دقیق‌تری برای کاربران ارائه داد. این کار نه‌تنها باعث بهبود تجربه کاربری می‌شود، بلکه به توسعه‌دهندگان کمک می‌کند تا اشکالات را سریع‌تر رفع کنند. همچنین، ایجاد استثناهای خاص به کاهش پیچیدگی کد کمک می‌کند، زیرا مدیریت خطاها به شکل ساختاریافته‌تری انجام می‌شود.

علاوه بر این، استثناهای سفارشی می‌توانند نقش مهمی در بهبود رابط کاربری ایفا کنند. نمایش پیام‌های خطای مرتبط و دقیق به کاربران و توسعه‌دهندگان کمک می‌کند تا مشکلات را بهتر درک کرده و سریع‌تر برطرف کنند. در نهایت، استفاده از استثناهای تعریف‌شده توسط کاربر باعث ایجاد کدی پایدارتر، قابل‌اعتمادتر و عاری از خطاهای غیرمنتظره می‌شود.


سوالات متداول


استثنای تعریف شده توسط کاربر در پایتون چیست؟

استثنای تعریف شده توسط کاربر در پایتون یک نوع استثنا است که توسط برنامه‌نویس ایجاد می‌شود تا شرایط خاصی که نیاز به مدیریت خطای خاص دارند، شبیه‌سازی کند. این استثنا می‌تواند با استفاده از ایجاد یک کلاس جدید که از Exception ارث‌بری می‌کند، تعریف شود.

چگونه یکاستثنای تعریف شده توسط کاربر در پایتون ایجاد کنیم؟

برای ایجاد یکاستثنای تعریف شده توسط کاربر در پایتون، کافی است یک کلاس جدید بسازید که از کلاس پایه Exception ارث‌بری کند. این کلاس می‌تواند متدهای خاص خود را برای مدیریت خطاها و پیام‌های خطا داشته باشد.

چرا باید از استثنای تعریف شده توسط کاربر در پایتون استفاده کنیم؟

استفاده از استثنای تعریف شده توسط کاربر در پایتون به شما این امکان را می‌دهد که خطاهای خاصی را که در برنامه‌تان به وجود می‌آید، شناسایی کرده و به درستی مدیریت کنید. این امر به خصوص زمانی مفید است که بخواهید خطاهایی را که در استثناهای پیش‌فرض وجود ندارد، مدیریت کنید.

چگونه یکاستثنای تعریف شده توسط کاربر در پایتون را در برنامه مدیریت کنیم؟

پس از تعریف استثنای خاص خود، می‌توانید آن را در بلوک try با استفاده از except مدیریت کنید. به این صورت که می‌توانید به طور خاص استثنای تعریف‌شده خود را در بلوک except بگیرید و اقدام مناسب را انجام دهید.

آیا می‌توان استثنای تعریف‌شده توسط کاربر را با استثناهای پیش‌فرض ترکیب کرد؟

بله، شما می‌توانید از استثنای تعریف‌شده توسط کاربر در کنار استثناهای پیش‌فرض پایتون استفاده کنید. در واقع، اگر بخواهید، می‌توانید یک استثنای پیش‌فرض را در داخل استثنای تعریف‌شده توسط کاربر مدیریت کنید تا برنامه‌ی شما انعطاف‌پذیرتر و مقاوم‌تر در برابر خطاها باشد.

میزان رضایتمندی
لطفاً میزان رضایت خودتان را از این مطلب با دادن امتیاز اعلام کنید.
[ امتیاز میانگین 0 از 0 نفر ]
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع و مراجع:
geeksforgeeks مجله پی استور programiz tutorialspoint

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

شش + شانزده =



برچسب‌ها:
برنامه نویسی پایتون پایتون


پیمایش به بالا