cython

Форк
0
/
funcexceptreraise.pyx 
55 строк · 1.2 Кб
1
import sys
2

3
def reraise(f, exc):
4
    """
5
    >>> def f(exc): raise exc
6
    >>> reraise(f, TypeError)
7
    Traceback (most recent call last):
8
    TypeError
9

10
    >>> def f(exc): raise exc('hiho')
11
    >>> reraise(f, TypeError)
12
    Traceback (most recent call last):
13
    TypeError: hiho
14
    """
15
    try:
16
        f(exc)
17
    except:
18
        assert sys.exc_info()[0] is exc, str(sys.exc_info()[1])
19
        raise
20

21
def reraise_original(f, exc, raise_catch):
22
    """
23
    >>> def f(exc): raise exc
24
    >>> def raise_catch_py():
25
    ...     try: raise ValueError
26
    ...     except: pass
27

28
    >>> reraise_original(f, TypeError, raise_catch_py)
29
    Traceback (most recent call last):
30
    TypeError
31

32
    >>> reraise_original(f, TypeError, raise_catch_cy)
33
    Traceback (most recent call last):
34
    TypeError
35

36
    >>> reraise_original(f, TypeError, raise_catch_cy_non_empty)
37
    Traceback (most recent call last):
38
    TypeError
39
    """
40
    try:
41
        f(exc)
42
    except:
43
        raise_catch()
44
        assert sys.exc_info()[0] is exc, str(sys.exc_info()[1])
45
        raise
46

47

48
def raise_catch_cy():
49
    try: raise ValueError
50
    except: pass
51

52
def raise_catch_cy_non_empty():
53
    try: raise ValueError
54
    except:
55
        a = 1+1
56

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.