Poprzedni wpis (Książki, książki) | Następny wpis (Rok 2007 się kończy)
Trafiony, zatopiony
Pół dnia spędziłem na szukaniu błędu, który ukrył się w poniższym fragmencie kodu:
try:
contactsIndex = self.names.index('Contact')
contacts = items[contactsIndex]
mail = email_re.findall(contacts)[0]
if mail:
logger_main.debug('Email %s found within ad data' % mail)
report_counters['ads_with_emails'] = report_counters['ads_with_emails'] + 1
except:
mail = False
Wszystko wydawało się w porządku, ale nie było. Klauzula except bez wyspecyfikowania wyjątku zachowuje się tak, że wyłapuje wszystko. Dopiero zapisanie jej w postaci except Exception, e: i zalogowanie wyjątku pokazało, gdzie tak naprawdę ten błąd był. Zupełnie nie tam, gdzie się spodziewałem — klucz słownika report_counters wcale nie nazywał się 'ads_with_emails' (mniejsza o to, jak się nazywał).
Po prostu się nie spodziewałem. Perfidia.
Etykiety: praca programowanie python
#1 bluszcz skomentował(-a) 14 grudnia 2007 o 22:41
ech