File: funcexceptcypy.pyx

package info (click to toggle)
cython 3.0.11%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 19,092 kB
  • sloc: python: 83,539; ansic: 18,831; cpp: 1,402; xml: 1,031; javascript: 511; makefile: 403; sh: 204; sed: 11
file content (65 lines) | stat: -rw-r--r-- 1,347 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
__doc__ = u"""
>>> import sys
>>> if not IS_PY3: sys.exc_clear()

>>> def test_py():
...   old_exc = sys.exc_info()[0]
...   try:
...     raise AttributeError("test")
...   except AttributeError:
...     test_c(error=AttributeError)
...     print(sys.exc_info()[0] is AttributeError or sys.exc_info()[0])
...   print((IS_PY3 and sys.exc_info()[0] is old_exc) or
...         (not IS_PY3 and sys.exc_info()[0] is AttributeError) or
...         sys.exc_info()[0])

>>> print(sys.exc_info()[0]) # 0
None
>>> test_py()
True
True
True
True

>>> print(sys.exc_info()[0]) # test_py()
None

>>> test_c(test_py)
True
True
True
True
True
True

>>> print(sys.exc_info()[0]) # test_c()
None

>>> def test_raise():
...   raise TestException("test")
>>> test_catch(test_raise, TestException)
True
None
"""

import sys
IS_PY3 = sys.version_info[0] >= 3

class TestException(Exception):
    pass

def test_c(func=None, error=None):
    try:
        raise TestException(u"test")
    except TestException:
        if func:
            func()
        print(sys.exc_info()[0] is TestException or sys.exc_info()[0])
    print(sys.exc_info()[0] is error or sys.exc_info()[0])

def test_catch(func, error):
    try:
        func()
    except error:
        print(sys.exc_info()[0] is error or sys.exc_info()[0])
    print(sys.exc_info()[0] is error or sys.exc_info()[0])