When writing a program, we, more often than not, will encounter errors.
Error caused by not following the proper structure (syntax) of the language is called syntax error or parsing error.
>>> if a < 3 File "<interactive input>", line 1 if a < 3 ^ SyntaxError: invalid syntax
We can notice here that a colon is missing in the
Errors can also occur at runtime and these are called exceptions. They occur, for example, when a file we try to open does not exist (
FileNotFoundError), dividing a number by zero (
ZeroDivisionError), module we try to import is not found (
Whenever these type of runtime error occur, Python creates an exception object. If not handled properly, it prints a traceback to that error along with some details about why that error occurred.
>>> 1 / 0 Traceback (most recent call last): File "<string>", line 301, in runcode File "<interactive input>", line 1, in <module> ZeroDivisionError: division by zero >>> open("imaginary.txt") Traceback (most recent call last): File "<string>", line 301, in runcode File "<interactive input>", line 1, in <module> FileNotFoundError: [Errno 2] No such file or directory: 'imaginary.txt'
Illegal operations can raise exceptions. There are plenty of built-in exceptions in Python that are raised when corresponding errors occur. We can view all the built-in exceptions using the
local() built-in functions as follows.
This will return us a dictionary of built-in exceptions, functions and attributes.
Some of the common built-in exceptions in Python programming along with the error that cause then are tabulated below.
|Exception||Cause of Error|
|AttributeError||Raised when attribute assignment or reference fails.|
|EOFError||Raised when the
|FloatingPointError||Raised when a floating point operation fails.|
|GeneratorExit||Raise when a generator's
|ImportError||Raised when the imported module is not found.|
|IndexError||Raised when index of a sequence is out of range.|
|KeyError||Raised when a key is not found in a dictionary.|
|KeyboardInterrupt||Raised when the user hits interrupt key (Ctrl+c or delete).|
|MemoryError||Raised when an operation runs out of memory.|
|NameError||Raised when a variable is not found in local or global scope.|
|NotImplementedError||Raised by abstract methods.|
|OSError||Raised when system operation causes system related error.|
|OverflowError||Raised when result of an arithmetic operation is too large to be represented.|
|ReferenceError||Raised when a weak reference proxy is used to access a garbage collected referent.|
|RuntimeError||Raised when an error does not fall under any other category.|
|SyntaxError||Raised by parser when syntax error is encountered.|
|IndentationError||Raised when there is incorrect indentation.|
|TabError||Raised when indentation consists of inconsistent tabs and spaces.|
|SystemError||Raised when interpreter detects internal error.|
|TypeError||Raised when a function or operation is applied to an object of incorrect type.|
|UnboundLocalError||Raised when a reference is made to a local variable in a function or method, but no value has been bound to that variable.|
|UnicodeError||Raised when a Unicode-related encoding or decoding error occurs.|
|UnicodeEncodeError||Raised when a Unicode-related error occurs during encoding.|
|UnicodeDecodeError||Raised when a Unicode-related error occurs during decoding.|
|UnicodeTranslateError||Raised when a Unicode-related error occurs during translating.|
|ValueError||Raised when a function gets argument of correct type but improper value.|
|ZeroDivisionError||Raised when second operand of division or modulo operation is zero.|
We can also define our own exception in Python (if required). Visit this page to learn more about user-defined exceptions.
We can handle these built-in and user-defined exceptions in Python using try, except and finally statements.