Περισσότερα
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))
Αυτό δεν φαίνεται να δουλεύει, λαμβάνω συντακτικό σφάλμα, ποιος είναι ο σωστός τρόπος για να γίνει αυτό για την καταγραφή όλων των ειδών των εξαιρέσεων σε ένα αρχείο
433
3
Πρέπει να ορίσετε τον τύπο της εξαίρεσης που θέλετε να πιάσετε. Έτσι γράψτε
except Exception, e:
αντί γιαexcept, e:
για μια γενική εξαίρεση (που θα καταγραφεί ούτως ή άλλως).Άλλη δυνατότητα είναι να γράψετε ολόκληρο τον κώδικα try/except με αυτόν τον τρόπο:
στην Python 3.x και στις σύγχρονες εκδόσεις της Python 2.x χρησιμοποιήστε
except Exception as e
αντί γιαexcept Exception, e
:Η σύνταξη δεν υποστηρίζεται πλέον στην python 3. Χρησιμοποιήστε την ακόλουθη.
Μπορείτε να δοκιμάσετε να καθορίσετε ρητά τον τύπο BaseException. Ωστόσο, αυτό θα πιάσει μόνο παράγωγα της BaseException. Ενώ αυτό περιλαμβάνει όλες τις εξαιρέσεις που παρέχονται από την υλοποίηση, είναι επίσης πιθανό να εγείρουν αυθαίρετες κλάσεις παλαιού τύπου.