Z bloku __exit__
w niestandardowej klasie kursora chcę przechwycić wyjątek, dzięki czemu mogę z kolei podać bardziej szczegółowy wyjątek. Jaki jest właściwy sposób na zrobienie tego?Ponownie przypisz wyjątek z poziomu pythona __exit__ blok
class Cursor:
def __enter__(self):
...
def __exit__(self, ex_type, ex_val, tb):
if ex_type == VagueThirdPartyError:
# get new more specific error based on error code in ex_val and
# return that one in its place.
return False # ?
else:
return False
Podniesienie specyficzny wyjątek w bloku __exit__
Wygląda hack, ale może jestem na myśli to.
Dlaczego wydaje się być hackem, aby podnieść wyjątek? – NPE
Pomyślałem, że mógł być inny sposób, aby to zrobić, ponieważ menedżer kontekstu przechwytuje wszystkie wyjątki w obrębie głównego bloku, przechowuje go, a następnie przekazuje do __exit__ w celu zatwierdzenia lub zawetowania. Podnoszenie się w ciągu __exit__ wydawało się bardziej rozszerzeniem zakresu obowiązków na podstawie jego argumentów - ale wyraźnie nad tym myślałem. – jpredham