51

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?

grovina
  • 2,869
  • 17
  • 25
Ryan Mills
  • 919
  • 1
  • 10
  • 21

2 Answers2

119

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())
Cyzanfar
  • 6,720
  • 9
  • 37
  • 71
13

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.

user5305519
  • 2,576
  • 4
  • 26
  • 40
Joao Vitorino
  • 2,641
  • 2
  • 29
  • 50