Print Error Type when I catch it
Steven D'Aprano
steve at REMOVE-THIS-cybersource.com.au
Thu Apr 22 23:33:35 EDT 2010
On Thu, 22 Apr 2010 16:50:30 -0700, Jimbo wrote:
> Hello
>
> I have a relatively simple question. I want to use a try except in a
> function & when an error occurs I want to print the error type name(eg
> IOError, OSError etc) do you know how I can do this without specifying
> all possible errors, eg having to do this "except (IOError, OSError,
> IndexError, ....):"
>
> try:
>
> ... some code
>
> except:
> # Here I want to print type of error that occured print errorType
As a general rule, bare excepts are terrible practice and should be
avoided.
At most, you should write:
try:
...
except Exception:
...
which will allow keyboard interrupts to continue to work correctly.
In Python 2.5 or 2.6, you can say:
try:
...
except Exception, e:
print e # prints the exception object
print type(e) # prints the type of exception
print type(e).__name__ # prints the type's name
raise # re-raise the error and get a traceback
In Python 2.6 you can also use
except Exception as e:
and in 3.x you *must* use the "as e" form.
> The reason I want to do this is because one of my complex programs is
> crashing
Perhaps you should aim to make them less complex? *wink*
> BUT no python error message is comming up in red when I run it,
What do you mean, "crashing"? If you're not getting an exception raised,
and a printed traceback, how do you know it is crashing?
Do you mean it is dumping core? If so, then a try...except won't save you.
> so I cant figure out what error occured? So I think its time I learnt to
> print out my own errors & their types
The best way to print out errors is:
DO ABSOLUTELY NOTHING.
Python will automatically print out the errors, unless you suppress them
with a try...except. So stop suppressing them and let Python do what it
is supposed to do!
--
Steven
More information about the Python-list
mailing list