This tutorial will help you acquire skills which is how to print exception in python with the help of examples.
How to catch and print exceptions in python?
An exception is an event that halts the execution of a Python program. Exceptions in Python include ZeroDivisionError
and IndexError
.
By capturing an exception and reporting it, the program operation will not be halted while the error received during execution is displayed.
Also read: Python Ceiling Method with Examples
Example 1
try:
a = 1/0
except Exception as e:
print(e)
Output
division by zero
Example 2
try:
l = [1, 2, 3]
l[4]
except IndexError as e:
print(e)
Output
list index out of range
Place the code that may throw an exception in a try block. To catch a particular exception, replace the Exception with the exception’s name.
Make an except block right after the try block with the line except Exception as e. This will enable you to learn how to handle any errors that occur. The object e can also print the error.
Catch and Print IndexError
Python will throw an IndexError
if you attempt to access the list element with index 100 while the list contains only three elements. This error indicates that the list index is out of range.
Example
try:
name = ['Jane', 'John', 'Jay']
print(name[3])
except Exception as e:
print(e)
You wrapped the function in a try/catch
block and then displayed the exception, but the program is not shut down. Therefore, the final print()
statement is executed after the exception has been handled.
This is the result of the print function that is on the previous line of code.
Output
list index out of range
Catch and Print ValueError
The ValueError
occurs if you attempt to utilize incorrect values in certain functions. Here’s an instance where the ValueError
is thrown when the square root of a negative value was attempted to be calculated:
Example
import math
try:
a = math.sqrt(-2)
except Exception as e:
print(e)
Output
math domain error
You can also explore more on Python print exception ValueError with Python ValueError Exact Solution.
Catch and Print TypeError
If you use indexing with the square bracket notation on an object that is not indexable, Python will throw a TypeError
because the object is not subscribable. If the object does not define the __getitem__()
method, this is the case.
Example
try:
variable = None
print(variable[0])
except Exception as e:
print(e)
Output
'NoneType' object is not subscriptable
Python Exceptions
Exceptions are events that occur during the execution of a program that interrupts the normal flow of instructions. When a Python script reaches a scenario it cannot handle, it typically raises an exception. The exception object in Python describes an error.
Even though a statement or phrase is syntactically correct, attempting to execute it may result in an error. Exceptions are errors identified during execution, and they are not necessarily deadly. Most exceptions, on the other hand, are not handled by programs and lead to the following error messages:
Example (ZeroDividionError)
10 * (1/0)
Output
Traceback (most recent call last): File "main.py", line 1, in <module> 10 * (1/0) ZeroDivisionError: division by zero
Example (NameError)
4 + spam*3
Output
Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'spam' is not defined
Example (TypeError)
'2' + 2
Output
Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can only concatenate str (not "int") to str
The final line of an error message describes what occurred. The exception type is printed as part of the message.
In the example, the exception types are ZeroDivisionError, NameError, and TypeError. The text displayed as the exception type corresponds to the name of the built-in exception that occurred.
This is true for all built-in exceptions, but not necessarily for user-defined ones (although it is a useful convention). Standard exception names serve as innate identifiers (not reserved keywords).
The information on the rest of the line depends on the type of exception and what caused it.
The previous section of the error message provides the exception’s context in the form of a stack traceback. Usually, the stack traceback shows lines from the source code, but it doesn’t show lines from the standard input.
Exception handling in python
Programming exceptions are conceivable. The following example prompts the user for input until a valid integer is entered, but allows the user to interrupt the application. A user-generated interruption raises the KeyboardInterrupt exception.
Example
while True:
try:
x = int(input("Please enter a number: "))
break
except ValueError:
print("Oops! That was no valid number. Try again...")
Output
Please enter a number: Oops! That was no valid number. Try again... Please enter a number: Traceback (most recent call last): File "main.py", line 5, in <module> x = int(input("Please enter a number: ")) EOFError: EOF when reading a line
Here’s how the try function works:
- First, the try clause (statement(s) between try and except) run time.
- If no exception occurs, the try statement ends.
- The rest of the try clause is bypassed if an exception occurs. The except clause is run if the exception type matches the except keyword. Then the execution continues after the try/except block.
- Unlisted exceptions are sent to outer try statements. In the handler is absent, the application quits with the above message.
A try statement may have multiple except clauses to define distinct exception handlers. However, the statement only executes one handler at most.
Python Handlers only handle exceptions that occur within their respective try clause and not within other handlers of the same try statement. An except clause may provide numerous exceptions as a comma-separated tuple.
Example
except (RuntimeError, TypeError, NameError): pass
How to raise exceptions in python?
The raise statement enables the programmer to command the occurrence of a specific exception.
Example
raise NameError('HiThere')
Output
Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: HiThere
The exception to be raised is indicated by the lone argument “raise
“. This must be either an instance of an exception or a class that inherits from the Exception base class. If an exception class is passed, its constructor will be implicitly constructed with no arguments.
Example
raise ValueError
Python chained exceptions
The raise statement supports an optional parameter, which enables exception chaining.
Example
raise RuntimeError from exc
Note: The exc must be exception instance or None for syntax purposes.
Chaining is beneficial when transforming exceptions.
Example
def func():
raise ConnectionError
try:
func()
except ConnectionError as exc:
raise RuntimeError('Failed to open database') from exc
Output
Traceback (most recent call last): File "main.py", line 7, in <module> func() File "main.py", line 3, in func raise ConnectionError ConnectionError The above exception was the direct cause of the following exception: Traceback (most recent call last): File "main.py", line 11, in <module> raise RuntimeError('Failed to open database') from exc RuntimeError: Failed to open database
User-defined exception in python
Programs can name their exceptions by defining a new class. Exceptions should stem directly or indirectly from the exception.
Exception classes can do anything that any other class can do, but they are usually minimal and only show a few properties that handlers can use to figure out what went wrong.
Most exceptions finish in “Error,” like standard exceptions. Many standard modules define exceptions for functions they define. By default, classes contain more information.
Summary
In summary, Python contains some built-in exceptions that pop up when an error occurs.
When these exceptions occur, the Python interpreter terminates the current process and transfers control to the process that raised the exception.
The Python print exception waits until it is handled, and without intervention, the program will crash.