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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
# pylint: disable=missing-docstring, too-few-public-methods, useless-object-inheritance
# pylint: disable=too-many-ancestors, no-absolute-import, import-error, multiple-imports,wrong-import-position
from __future__ import print_function
import socket, binascii, abc, six
class MyException(object):
"""Custom 'exception'."""
class MySecondException(object):
"""Custom 'exception'."""
class MyGoodException(Exception):
"""Custom exception."""
class MySecondGoodException(MyGoodException):
"""Custom exception."""
class SkipException(socket.error):
"""Not an exception for Python 2, but one in 3."""
class SecondSkipException(SkipException):
"""Also a good exception."""
try:
1 + 1
except MyException: # [catching-non-exception]
print("caught")
try:
1 + 2
# +1:[catching-non-exception,catching-non-exception]
except (MyException, MySecondException):
print("caught")
try:
1 + 3
except MyGoodException:
print("caught")
try:
1 + 3
except (MyGoodException, MySecondGoodException):
print("caught")
try:
1 + 3
except (SkipException, SecondSkipException):
print("caught")
try:
1 + 42
# +1:[catching-non-exception,catching-non-exception]
except (None, list()):
print("caught")
try:
1 + 24
except None: # [catching-non-exception]
print("caught")
EXCEPTION = None
EXCEPTION = ZeroDivisionError
try:
1 + 46
except EXCEPTION:
print("caught")
try:
1 + 42
# +1:[catching-non-exception,catching-non-exception,catching-non-exception]
except (list([4, 5, 6]), None, ZeroDivisionError, 4):
print("caught")
EXCEPTION_TUPLE = (ZeroDivisionError, OSError)
NON_EXCEPTION_TUPLE = (ZeroDivisionError, OSError, 4)
try:
1 + 42
except EXCEPTION_TUPLE:
print("caught")
try:
1 + 42
except NON_EXCEPTION_TUPLE: # [catching-non-exception]
print("caught")
from missing_import import UnknownError
UNKNOWN_COMPONENTS = (ZeroDivisionError, UnknownError)
try:
1 + 42
except UNKNOWN_COMPONENTS:
print("caught")
try:
1 + 42
except binascii.Error:
print('builtin and detected')
try:
1 + 45
except object: # [catching-non-exception]
print('caught')
try:
1 + 42
except range: # [catching-non-exception]
print('caught')
class HasErrorInMRO(six.with_metaclass(abc.ABCMeta, Exception)):
pass
class Second(HasErrorInMRO):
pass
try:
raise Second
except Second:
pass
class SomeBase(UnknownError):
pass
EXCEPTIONS = (SomeBase, ValueError)
try:
raise ValueError
except EXCEPTIONS:
pass
|