операционная система: Windows 10, Python version 3.9.9,
Случайно столкнулся с тем, что возвращаемый кортеж функции sys.exc_info() по-разному отображается при выводе "целиком" и выводе поэлементно:
Результат работы:
1) Исключение отслежено:
(<class '__main__.Some_Exc'>, Some_Exc(), <traceback object at 0x000001F524C98780>)
2) А теперь поэлементно:
info[ 0 ] = <class '__main__.Some_Exc'>
info[ 1 ] =
info[ 2 ] = <traceback object at 0x000001F524C98780>
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
1) Исключение отслежено:
(<class '__main__.Some_Exc'>, Some_Exc('Val', 25), <traceback object at 0x000001F524C98780>)
2) А теперь поэлементно:
info[ 0 ] = <class '__main__.Some_Exc'>
info[ 1 ] = ('Val', 25)
info[ 2 ] = <traceback object at 0x000001F524C98780>
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Обратите внимание на элемент sys.exc_info()[1] при выводе целиком и info[ 1 ] при выводе поэлементно.
В чем причина?
Package Version
------- -------
pip 21.3.1
------- -------
pip 21.3.1
Случайно столкнулся с тем, что возвращаемый кортеж функции sys.exc_info() по-разному отображается при выводе "целиком" и выводе поэлементно:
Python:
# Класс исключений
class Some_Exc (Exception): pass
#
import sys
#-------------------------------------------------------------------------------------
# Обработка исключения 1
try:
raise Some_Exc() # если нет аргументов
except Some_Exc:
print('\n 1) Исключение отслежено: \n', sys.exc_info(),
'\n 2) А теперь поэлементно:')
for k in range(len(sys.exc_info())):
print ('\t info[', k,'] = ', sys.exc_info()[k])
print(' = ' * 40)
#---------------------------------------------------------------------------------------
# Обработка исключения 2
try:
raise Some_Exc('Val', 25) # с аргументами (случайный набор)
except Some_Exc:
print('\n 1) Исключение отслежено: \n', sys.exc_info(),
'\n 2) А теперь поэлементно:')
for k in range(len(sys.exc_info())):
print ('\t info[', k,'] = ', sys.exc_info()[k])
Результат работы:
1) Исключение отслежено:
(<class '__main__.Some_Exc'>, Some_Exc(), <traceback object at 0x000001F524C98780>)
2) А теперь поэлементно:
info[ 0 ] = <class '__main__.Some_Exc'>
info[ 1 ] =
info[ 2 ] = <traceback object at 0x000001F524C98780>
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
1) Исключение отслежено:
(<class '__main__.Some_Exc'>, Some_Exc('Val', 25), <traceback object at 0x000001F524C98780>)
2) А теперь поэлементно:
info[ 0 ] = <class '__main__.Some_Exc'>
info[ 1 ] = ('Val', 25)
info[ 2 ] = <traceback object at 0x000001F524C98780>
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Обратите внимание на элемент sys.exc_info()[1] при выводе целиком и info[ 1 ] при выводе поэлементно.
В чем причина?