Best Way to Handle All Exceptions
Jean
MrJean1 at gmail.com
Wed Jul 15 11:15:55 EDT 2009
On Jul 13, 6:26 am, seldan24 <selda... at gmail.com> wrote:
> Hello,
>
> I'm fairly new at Python so hopefully this question won't be too
> awful. I am writing some code that will FTP to a host, and want to
> catch any exception that may occur, take that and print it out
> (eventually put it into a log file and perform some alerting action).
> I've figured out two different ways to do this, and am wondering which
> is the best (i.e. cleanest, 'right' way to proceed). I'm also trying
> to understand exactly what occurs for each one.
>
> The first example:
>
> from ftplib import FTP
> try:
> ftp = FTP(ftp_host)
> ftp.login(ftp_user, ftp_pass)
> except Exception, err:
> print err
>
> This works fine. I read through the documentation, and my
> understanding is that there is a built-in exceptions module in python,
> that is automatically available in a built-in namespace. Within that
> module is an 'Exception' class which would contain whatever exception
> is thrown. So, I'm passing that to the except, along with err to hold
> the value and then print it out.
>
> The second example:
>
> from ftplib import FTP
> import sys
> try:
> ftp = FTP(ftp_host)
> ftp.login(ftp_user, ftp_pass)
> except:
> print sys.exc_info()
>
> Here I, for the most part, get the same thing. I'm not passing
> anything to except and just printing out the exception using a method
> defined in the sys module.
>
> So, I'm new to Python... I've made it this far and am happy, but want
> to make sure I'm coding correctly from the start. Which method is the
> better/cleaner/more standard way to continue? Thanks for any help.
The second example is "better" if you need your code to work in Python
3.0 *and* in 2.X.
For Python 3.0, the first example has to be written as:
....
except Exception as err:
....
/Jean Brouwers
More information about the Python-list
mailing list