ameyazing
ameyazing

Reputation: 423

How to handle exception with parameters in Python

In Python 3.x, what is the correct syntax to handle exceptions that have parameters. I'm specifically trying to handle WriteError documented on this page.

I'm writing the code to handle it as:

   except pymongo.errors.WriteError(err, code, dtls):
       logging.error("DB Write Error. err={}; code={}; dtls={}".format(err, code, dtls))

This is not working.

I even had a look at the Erros and Exceptions documentation. But could not find it there.

Can you please tell me the correct way to handle these sort of exceptions?

Upvotes: 2

Views: 539

Answers (2)

Mureinik
Mureinik

Reputation: 311308

The except block just needs the exception's type. Within the block you could, of course, use its attributes if you wish:

except pymongo.errors.WriteError as e:
   logging.error("DB Write Error. err={}; code={}; dtls={}".format(e.err, e.code, e.dtls))

Upvotes: 1

chepner
chepner

Reputation: 531165

You catch the error first, then examine its attributes (reraising the exception if it isn't one you want to handle). There is no pattern matching on the contents of the exception.

except pymongo.errors.WriteError as exc:
    logging.error("DB WriteError. err={}; code={}; dtls={}".format(exc.err, exc.code, exc.dtls))

Upvotes: 1

Related Questions