Chciałbym dodać kontekst wyjątek tak:Jak mogę dodać kontekst do wyjątku w Pythonie
def process(vals):
for key in vals:
try:
do_something(vals[key])
except Exception as ex: # base class. Not sure what to expect.
raise # with context regarding the key that was being processed.
znalazłem sposób, który jest nietypowo długo zdyszany dla Pythona. Czy istnieje lepszy sposób niż to?
try:
do_something(vals[key])
except Exception as ex:
args = list(ex.args)
if len(args) > 1:
args[0] = "{}: {}".format(key, args[0])
ex.args = tuple(args)
raise # Will re-trhow ValueError with new args[0]
wewnątrz wyjątkiem bloku 'ex.args = (klucz,) + ex.args' jest nieco czystsze? –
@SteveAllison: Można to zrobić w ten sposób, ale wiadomość będzie prezentowana jako krotka, na przykład 'ZeroDivisionError: ('0:', 'dzielenie przez zero')'. – unutbu