Any way to turn off exception handling? (debugging)

Duncan Booth duncan.booth at invalid.invalid
Fri Feb 12 13:10:26 CET 2010


Peter Otten <__peter__ at web.de> wrote:

> You could try to shadow the exception class with None:
> 
>>>> ZeroDivisionError = None
>>>> try:
> ...     1/0
> ... except ZeroDivisionError:
> ...     print "caught"
> ...
> Traceback (most recent call last):
>   File "<stdin>", line 2, in <module>
> ZeroDivisionError: integer division or modulo by zero
> 

This works in Python 2.x but will break in Python 3. None is not a valid 
exception specification and Python 3 will check for that and complain.

>>> ZeroDivisionError = None
>>> try:
...     1/0
... except ZeroDivisionError:
...     print('caught')
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
ZeroDivisionError: int division or modulo by zero

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
TypeError: catching classes that do not inherit from BaseException is 
not allowed
>>>

A better solution is to use an empty tuple as that is a valid exception 
specification so will work in both Python 2.x and 3.x:

>>> ZeroDivisionError = ()
>>> try:
...     1/0
... except ZeroDivisionError:
...     print('caught')
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
ZeroDivisionError: int division or modulo by zero


-- 
Duncan Booth http://kupuguy.blogspot.com



More information about the Python-list mailing list