python 3 try-except all with error

PythonPython 3.xTry Except

Python Problem Overview


Is it possible to do a try-except catch all that still shows the error without catching every possible exception? I have a case where exceptions will happen once a day every few days in a script running 24/7. I can't let the script die but they also don't matter since it retries regardless as long as I try except everything. So while I track down any last rare exceptions I want to log those to a file for future debugging.

example:

try:
    print(555)
except:
    print("type error: "+ str(the_error))

Any way to replace the_error with a stack trace or something similar?

Python Solutions


Solution 1 - Python

Yes you can catch all errors like so:

try:
    print(555)
except Exception as e:
    print("type error: " + str(e))

For the stack trace I usually use the traceback module:

import traceback

try:
    print(555)
except Exception as e:
    print("type error: " + str(e))
    print(traceback.format_exc())

Solution 2 - Python

You can do:

   try:
       print(555)
   except Exception as err:
      print("Erro {}".format(err))

Or use raise

Docs are always your friend

> Tip: Avoid use "except:"

Use something more descriptive like

...
except (ValueError, KeyError):

Unless your code is very well tested, you can't figure out every error.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRyan MillsView Question on Stackoverflow
Solution 1 - PythonCyzanfarView Answer on Stackoverflow
Solution 2 - PythonJoao VitorinoView Answer on Stackoverflow