summaryrefslogtreecommitdiff
path: root/pylint/test/functional/misplaced_bare_raise.py
blob: ad6021404de4ac8cfa7b099572f5c58de85c4dcd (plain)
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
66
67
68
69
70
71
72
73
74
# pylint: disable=missing-docstring, broad-except, unreachable
# pylint: disable=unused-variable, too-few-public-methods, invalid-name

try:
    raise # [misplaced-bare-raise]
except Exception:
    pass

try:
    pass
except Exception:
    raise

try:
    pass
except Exception:
    if 1 == 2:
        raise

def test():
    try:
        pass
    except Exception:
        def chest():
            try:
                pass
            except Exception:
                raise
        raise

def test1():
    try:
        if 1 > 2:
            def best():
                raise # [misplaced-bare-raise]
    except Exception:
        pass
    raise # [misplaced-bare-raise]
raise # [misplaced-bare-raise]

try:
    pass
finally:
    # This might work or might not to, depending if there's
    # an error raised inside the try block. But relying on this
    # behaviour can be error prone, so we decided to warn
    # against it.
    raise # [misplaced-bare-raise]


class A(object):
    try:
        pass
    except Exception:
        raise
    raise # [misplaced-bare-raise]

# This works in Python 2, but the intent is nevertheless
# unclear. It will also not work on Python 3, so it's best
# not to rely on it.
exc = None
try:
    1/0
except ZeroDivisionError as exc:
    pass
if exc:
    raise # [misplaced-bare-raise]

# Don't emit if we're in ``__exit__``.
class ContextManager(object):
    def __enter__(self):
        return self
    def __exit__(self, *args):
        raise