user3651247
user3651247

Reputation: 248

Hide Traceback message for class exceptions in Python

Can anyone advice what would be effective way to hide the Trackback from a python class exception. We know sys.tracebacklimit = 0 can be useful for hiding the trace, but not sure how this can be implemented in a class.

For example, we have a test.py file with example code:

class FooError(Exception):
    pass

class Foo():
    def __init__(self, *args):
        if len(args) != 2:
            raise FooError('Input must be two parameters')
        x, y = args
        self.x = x
        self.y = y

When we run the cmd to run this file, we get

>>> from test import *
>>> Foo()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/test.py", line 8, in __init__
    raise FooError('Input must be two parameters')
test.FooError: Input must be two parameters

However, we only expect the error message should be displayed:

test.FooError: Input must be two parameters

Any code changes should be included in the class to reach this?

Upvotes: 0

Views: 377

Answers (1)

AKX
AKX

Reputation: 169032

But why? Are you trying to make debugging your program harder?

Either way, this is really about how exceptions and tracebacks are printed by the default implementation. If you really want the console exception print implementation not to print a traceback for your errors, you can set sys.excepthook to a custom implementation that doesn't print the traceback.

This won't prevent any other try/except block from being able to access the traceback though, of course.

Upvotes: 1

Related Questions