Viac na
zachytávanie správ o výnimkách v jazyku python
import ftplib
import urllib2
import os
import logging
logger = logging.getLogger('ftpuploader')
hdlr = logging.FileHandler('ftplog.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.INFO)
FTPADDR = "some ftp address"
def upload_to_ftp(con, filepath):
try:
f = open(filepath,'rb') # file to send
con.storbinary('STOR '+ filepath, f) # Send the file
f.close() # Close file and FTP
logger.info('File successfully uploaded to '+ FTPADDR)
except, e:
logger.error('Failed to upload to ftp: '+ str(e))
Zdá sa, že to nefunguje, dostanem syntaktickú chybu, aký je správny spôsob, ako to urobiť pre zaznamenávanie všetkých druhov výnimiek do súboru
433
3
Musíte definovať typ výnimky, ktorú chcete zachytiť. Takže namiesto
except, e:
napíšteexcept, e:
pre všeobecnú výnimku (ktorá bude aj tak zaznamenaná).Ďalšou možnosťou je napísať celý kód try/except týmto spôsobom:
v Pythone 3.x a moderných verziách Pythonu 2.x používajte
except Exception as e
namiestoexcept Exception, e
:Táto syntax už nie je v jazyku python 3 podporovaná. Namiesto nej použite nasledujúcu.
Môžete skúsiť explicitne určiť typ BaseException. Tým však zachytíte len deriváty BaseException. To síce zahŕňa všetky implementačne zabezpečené výnimky, ale je možné vyvolať aj ľubovoľné výnimky starého typu.