وقتی استثنایی برای ایجاد شدن ساخته میشود، معمولاً با اطلاعاتی که خطا را توصیف میکند مقداردهی اولیه میشود. مواردی وجود دارد که مفید است اطلاعاتی پس از گرفته شدن استثناء اضافه شود. برای این منظور، استثناها یک متد add_note(note) دارند که یک رشته میپذیرد و آن را به لیست یادداشتهای استثناء اضافه میکند. رندر استاندارد ردیابی، تمام یادداشتها را به ترتیبی که اضافه شدهاند، بعد از استثناء، شامل میشود.
>>> try:
... raise TypeError('bad type')
... except Exception as e:
... e.add_note('Add some information')
... e.add_note('Add some more information')
... raise
...
Traceback (most recent call last):
File "", line 2, in
raise TypeError('bad type')
TypeError: bad type
Add some information
Add some more information
>>>
به عنوان مثال، هنگام جمعآوری استثناها در یک گروه استثناء، ممکن است بخواهیم اطلاعات زمینهای برای خطاهای فردی اضافه کنیم. در مثال زیر هر استثناء در گروه دارای یادداشتی است که نشان میدهد این خطا کی رخ داده است.
>>> def f():
... raise OSError('operation failed')
...
>>> excs = []
>>> for i in range(3):
... try:
... f()
... except Exception as e:
... e.add_note(f'Happened in Iteration {i+1}')
... excs.append(e)
...
>>> raise ExceptionGroup('We have some problems', excs)
+ Exception Group Traceback (most recent call last):
| File "", line 1, in
| raise ExceptionGroup('We have some problems', excs)
| ExceptionGroup: We have some problems (3 sub-exceptions)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
| File "", line 3, in
| f()
| ~^^
| File "", line 2, in f
| raise OSError('operation failed')
| OSError: operation failed
| Happened in Iteration 1
+---------------- 2 ----------------
| Traceback (most recent call last):
| File "", line 3, in
| f()
| ~^^
| File "", line 2, in f
| raise OSError('operation failed')
| OSError: operation failed
| Happened in Iteration 2
+---------------- 3 ----------------
| Traceback (most recent call last):
| File "", line 3, in
| f()
| ~^^
| File "", line 2, in f
| raise OSError('operation failed')
| OSError: operation failed
| Happened in Iteration 3
+------------------------------------
>>> این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://docs.python.org/3/tutorial