Python Builtin Exceptions (original) (raw)
In Python, exceptions are events that can alter the flow of control in a program. These errors can arise during program execution and need to be handled appropriately. Python provides a set of built-in exceptions, each meant to signal a particular type of error.
We can catch exceptions using try and except blocks, allowing your program to continue running even if an error occurs. These built-in exceptions can be viewed using the **local() built-in functions as follows :
locals()['builtins']
This returns a dictionary of built-in exceptions, functions and attributes.
Python Built-in Exceptions
Here’s a table listing all the major Python built-in exceptions along with a brief :
Exception Name | Description |
---|---|
BaseException | The base class for all built-in exceptions. |
Exception | The base class for all non-exit exceptions. |
ArithmeticError | Base class for all errors related to arithmetic operations. |
ZeroDivisionError | Raised when a division or modulo operation is performed with zero as the divisor. |
OverflowError | Raised when a numerical operation exceeds the maximum limit of a data type. |
FloatingPointError | Raised when a floating-point operation fails. |
AssertionError | Raised when an assert statement fails. |
AttributeError | Raised when an attribute reference or assignment fails. |
IndexError | Raised when a sequence subscript is out of range. |
KeyError | Raised when a dictionary key is not found. |
MemoryError | Raised when an operation runs out of memory. |
NameError | Raised when a local or global name is not found. |
OSError | Raised when a system-related operation (like file I/O) fails. |
TypeError | Raised when an operation or function is applied to an object of inappropriate type. |
ValueError | Raised when a function receives an argument of the right type but inappropriate value. |
ImportError | Raised when an import statement has issues. |
ModuleNotFoundError | Raised when a module cannot be found. |
IOError | Raised when an I/O operation (like reading or writing to a file) fails. |
FileNotFoundError | Raised when a file or directory is requested but cannot be found. |
StopIteration | Raised when the next() function is called and there are no more items in an iterator. |
KeyboardInterrupt | Raised when the user presses Ctrl+C or interrupts the program’s execution. |
SystemExit | Raised when the sys.exit() function is called to exit the program. |
NotImplementedError | Raised when an abstract method that needs to be implemented is called. |
RuntimeError | Raised when a general error occurs in the program. |
RecursionError | Raised when the maximum recursion depth is exceeded. |
SyntaxError | Raised when there is an error in the syntax of the code. |
IndentationError | Raised when there is an indentation error in the code. |
TabError | Raised when the indentation consists of inconsistent use of tabs and spaces. |
UnicodeError | Raised when a Unicode-related encoding or decoding error occurs. |
Let’s understand each exception in detail:
1. BaseException
The base class for all built-in exceptions. **Example:
Python `
try: raise BaseException("This is a BaseException") except BaseException as e: print(e)
`
Output
This is a BaseException
**Explanation: This code manually raises a BaseException
and catches it, printing the exception message.
2. Exception
The base class for all non-exit exceptions. **Example:
Python `
try: raise Exception("This is a generic exception") except Exception as e: print(e)
`
Output
This is a generic exception
**Explanation: This raises a generic Exception
and handles it, printing the message.
3. ArithmeticError
Base class for all errors related to arithmetic operations. **Example:
Python `
try: raise ArithmeticError("Arithmetic error occurred") except ArithmeticError as e: print(e)
`
Output
Arithmetic error occurred
**Explanation: This raises an ArithmeticError
and catches it, displaying the error message.
4. ZeroDivisionError
Raised when a division or modulo operation is performed with zero as the divisor. **Example:
Python `
try: result = 10 / 0 except ZeroDivisionError as e: print(e)
`
**Explanation: This code attempts to divide by zero, causing a ZeroDivisionError
.
5. OverflowError
Raised when a numerical operation exceeds the maximum limit of a data type. **Example:
Python `
import math
try: result = math.exp(1000) # Exponential function with a large argument except OverflowError as e: print(e)
`
**Explanation: The exponential function with a large argument causes an OverflowError
.
6. FloatingPointError
Raised when a floating-point operation fails. **Example:
Python `
import sys import math
sys.float_info.max = 1.79e+308 # Maximum float value
try: math.sqrt(-1.0) # This doesn't raise a FloatingPointError by default except FloatingPointError as e: print(e)
`
**Explanation: Floating-point errors are rare in Python; this code demonstrates the typical use case.
7. AssertionError
Raised when an assert statement fails. **Example:
Python `
try: assert 1 == 2, "Assertion failed" except AssertionError as e: print(e)
`
**Explanation: This code fails an assertion, raising an AssertionError
.
8. AttributeError
Raised when an attribute reference or assignment fails. **Example:
Python `
class MyClass: pass
obj = MyClass()
try: obj.some_attribute except AttributeError as e: print(e)
`
Output
'MyClass' object has no attribute 'some_attribute'
**Explanation: This code tries to access a non-existent attribute, causing an AttributeError
.
9. IndexError
Raised when a sequence subscript is out of range. **Example:
Python `
my_list = [1, 2, 3]
try: element = my_list[5] except IndexError as e: print(e)
`
Output
list index out of range
**Explanation: This code tries to access an out-of-range index in a list, raising an IndexError
.
10. KeyError
Raised when a dictionary key is not found. **Example:
Python `
d = {"key1": "value1"}
try: val = d["key2"] except KeyError as e: print(e)
`
**Explanation: This code attempts to access a non-existent dictionary key, causing a KeyError
.
11. MemoryError
Raised when an operation runs out of memory. **Example:
Python `
try: li = [1] * (10**10) except MemoryError as e: print(e)
`
**Explanation: This code tries to create a very large list, causing a MemoryError
.
12. NameError
Raised when a local or global name is not found. **Example:
Python `
try: print(var) except NameError as e: print(e)
`
Output
name 'var' is not defined
**Explanation: This code attempts to use an undefined variable, raising a NameError
.
13. OSError
Raised when a system-related operation (like file I/O) fails. **Example:
Python `
try: open("non_existent_file.txt") except OSError as e: print(e)
`
Output
[Errno 2] No such file or directory: 'non_existent_file.txt'
**Explanation: This code tries to open a non-existent file, causing an OSError
.
14. TypeError
Raised when an operation or function is applied to an object of inappropriate type. **Example:
Python `
try: result = '2' + 2 except TypeError as e: print(e)
`
Output
can only concatenate str (not "int") to str
**Explanation: This code tries to add a string and an integer, causing a TypeError
.
15. ValueError
Raised when a function receives an argument of the right type but inappropriate value. **Example:
Python `
try: res = int("abc") except ValueError as e: print(e)
`
Output
invalid literal for int() with base 10: 'abc'
**Explanation: This code tries to convert a non-numeric string to an integer, raising a ValueError
.
16. ImportError
Raised when an import statement has issues. **Example:
Python `
try: import mod except ImportError as e: print(e)
`
Output
No module named 'mod'
**Explanation: This code attempts to import a non-existent module, causing an ImportError
.
17. ModuleNotFoundError
Raised when a module cannot be found. **Example:
Python `
try: import module except ModuleNotFoundError as e: print(e)
`
Output
No module named 'module'
**Explanation: Similar to ImportError
, this code tries to import a module that doesn’t exist.
18. IOError
Raised when an I/O operation (like reading or writing to a file) fails. **Example:
Python `
try: open("non_existent_file.txt") except IOError as e: print(e)
`
Output
[Errno 2] No such file or directory: 'non_existent_file.txt'
**Explanation: This is another example of file-related errors, causing an IOError
.
19. FileNotFoundError
Raised when a file or directory is requested but cannot be found. **Example:
Python `
try: open("non_existent_file.txt") except FileNotFoundError as e: print(e)
`
Output
[Errno 2] No such file or directory: 'non_existent_file.txt'
**Explanation: This specifically catches the FileNotFoundError
when trying to open a missing file.
20. StopIteration
Raised when the next()
function is called and there are no more items in an iterator. **Example:
Python `
my_iter = iter([1, 2, 3])
try: while True: print(next(my_iter)) except StopIteration as e: print("End of iterator")
`
Output
1 2 3 End of iterator
**Explanation: This code iterates through a list and raises StopIteration
when the list is exhausted.
21. KeyboardInterrupt
Raised when the user presses Ctrl+C or interrupts the program’s execution. **Example:
Python `
try: while True: pass except KeyboardInterrupt as e: print("Program interrupted by user")
`
**Explanation: This code runs an infinite loop until the user interrupts it with Ctrl+C.
22. SystemExit
Raised when the sys.exit()
function is called to exit the program. **Example:
Python `
import sys
try: sys.exit() except SystemExit as e: print("System exit called")
`
**Explanation: This code calls sys.exit()
, raising a SystemExit
exception.
23. NotImplementedError
Raised when an abstract method that needs to be implemented is called. **Example:
Python `
class BaseClass: def some_method(self): raise NotImplementedError("This method should be overridden")
try: obj = BaseClass() obj.some_method() except NotImplementedError as e: print(e)
`
Output
This method should be overridden
**Explanation: This code demonstrates a base class method that should be overridden in subclasses, raising NotImplementedError
if called.
24. RuntimeError
Raised when a general error occurs in the program. **Example:
Python `
try: raise RuntimeError("A runtime error occurred") except RuntimeError as e: print(e)
`
Output
A runtime error occurred
**Explanation: This manually raises a RuntimeError
and catches it.
25. RecursionError
Raised when the maximum recursion depth is exceeded. **Example:
Python `
try: def recursive_function(): recursive_function()
recursive_function()
except RecursionError as e: print(e)
`
Output
maximum recursion depth exceeded
**Explanation: This code defines a recursive function that calls itself indefinitely, causing a RecursionError
.
26. SyntaxError
Raised when there is an error in the syntax of the code. **Example:
Python `
try: eval('x === 2') except SyntaxError as e: print(e)
`
Output
invalid syntax (, line 1)
**Explanation: This code uses eval()
to evaluate an incorrect syntax, raising a SyntaxError
.
27. IndentationError
Raised when there is an indentation error in the code. **Example:
Python `
try: eval('def func():\n print("Hello")\n print("World")') except IndentationError as e: print(e)
`
**Explanation: This code uses eval()
to evaluate code with incorrect indentation, causing an IndentationError
.
28. TabError
Raised when the indentation consists of inconsistent use of tabs and spaces. **Example:
Python `
try: eval('def func():\n\tprint("Hello")\n print("World")') except TabError as e: print(e)
`
**Explanation: This code uses eval()
to evaluate code with mixed tabs and spaces, causing a TabError
.
29. UnicodeError
Raised when a Unicode-related encoding or decoding error occurs. **Example:
Python `
try: 'æ'.encode('ascii') except UnicodeError as e: print(e)
`
Output
'ascii' codec can't encode character '\xe6' in position 0: ordinal not in range(128)
**Explanation: This code tries to encode a non-ASCII character using the ASCII codec, raising a UnicodeError
.