در این سوال برای سادهتر کردن مدیریت خطاها و مرتب کردن استثناها میخواهیم تمام خطاهایی که رخ میدهد را با یک قرارداد واحد در کلاسی به نام ExceptionProxy
ذخیره کنیم.
کلاس ExceptionProxy
برای این کار به ازای هر خطایی که رخ میدهد یک شی از کلاس ExceptionProxy
میسازیم که دارای دو خصوصیت است.
این خصوصیات عبارتند از (e
یک شی از کلاس ExceptionProxy
است):
- متن استثنای رخ داده. (تبدیلشدهی استثنا به رشته):
e.msg
- تابعی که باعث ایجاد استثنا شده:
e.function
تابع transform_exceptions
از شما میخواهیم تابعی به نام transform_exceptions()
بنویسید که یک لیست از توابع ورودی میگیرد.
سپس هر کدام از توابع را صدا میکند (توابع بدون آرگومان هستند) و استثناهایی که رخ میدهد را با قرار داد بالا به شیای از ExceptionProxy
تبدیل کرده و در نهایت لیست خطاهای تبدیل شده را به همان ترتیب توابع برمیگرداند. دقت کنید که اگر تابعای بدون خطا اجرا شد باید یک شی ExceptionProxy
ساخته و مقدار msg
آن را با "ok!"
مقداردهی کنید.
class ExceptionProxy(Exception):
pass
def transform_exceptions(func_ls):
pass
نمونه
class ExceptionProxy(Exception):
# define your class here
def transform_exceptions(func_ls):
# implement your function here
def f():
1/0
def g():
pass
tr_ls = transform_exceptions([f, g])
for tr in tr_ls:
print("msg: " + tr.msg + "\nfunction name: " + tr.function.__name__)
خروجی کد بالا باید به شکل زیر باشد.
msg: division by zero
function name: f
msg: ok!
function name: g
نکات
- میتوانید فایل اولیه این سوال را از این لینک دریافت کنید.
- تابع شما نباید مقداری را چاپ کند، بلکه باید مقادیر مورد نظر را بازگرداند.
نحوه ارسال
شما باید کلاس ExceptionProxy
و تابع transform_exceptions
موجود در فایل solution.py
را تکمیل و سپس این فایل را ارسال کنید.
ارسال پاسخ برای این سؤال