Illegal raise¶
ID: py/illegal-raise
Kind: problem
Security severity:
Severity: error
Precision: very-high
Tags:
- reliability
- correctness
- types
Query suites:
- python-security-and-quality.qls
Click to see the query in the CodeQL repository
If the object raised is not a legal Exception class or an instance of one, then a TypeError
will be raised instead.
Legal exception classes are:
Any old-style classes (Python 2 only)
Any subclass of the builtin class
BaseException
However, it recommended that you only use subclasses of the builtin classException
(which is itself a subclass ofBaseException
).
Recommendation¶
Change the expression in the raise
statement to be a legal exception.
Example¶
#Cannot raise an int, even if we want to
def raise_int():
#Will raise a TypeError
raise 4
References¶
Python Language Reference: Exceptions.
Python Tutorial: Handling Exceptions.