در این سوال برای سادهتر کردن مدیریت خطاها و مرتب کردن استثناها میخواهیم تمام خطاهایی که رخ میدهد را با یک قرار داد واحد در کلاسی به نام `ExceptionProxy` ذخیره کنیم.
برای این کار به ازای هر خطایی که رخ میدهد یک شی از کلاس `ExceptionProxy` میسازیم که دارای دو خصوصیت است.
این خصوصیات عبارتند از (`e` یک شی از کلاس `ExceptionProxy` است):
+ متن استثنای رخ داده. (تبدیل شدهی استثنا به رشته): `e.msg`
+ تابعای که باعث ایجاد استثنا شده: `e.function`
از شما میخواهیم تابعای به نام `transform_exceptions()` بنویسید که یک لیست از توابع ورودی میگیرد.
سپس هر کدام از توابع را صدا میکند (توابع بدون آرگومان هستند) و استثناهایی که رخ میدهد را با قرار داد بالا به شیای از `ExceptionProxy` تبدیل کرده و در نهایت لیست خطاهای تبدیل شده را به همان ترتیب توابع برمیگرداند. دقت کنید که اگر تابعای بدون خطا اجرا شد باید یک شی `ExceptionProxy` ساخته و مقدار `msg` آنرا با `"ok!"` مقدار دهی کنید.
کلاس `ExceptionProxy` و تابع `transform_exceptions()` خود را در فایل `solution.py` تعریف کرده و سپس زیپ و ارسال کنید.
به مثال زیر دقت کنید:
```python
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
```
برای ارسال پاسخ یک فایل *Zip* آپلود کنید که شامل فایل `solution.py` است و چیزهای مورد نظر سوال در آن قرار دارد.
پروژهای - چیراکسی؟ - پایتون