Error in Python can be of two types i.e. Syntax errors and Exceptions. Errors are the problems in a program due to which the program will stop the execution. On the other hand, exceptions are raised when some internal events occur which changes the normal flow of the program.
The difference between Syntax Error and Exceptions
Syntax Error: As the name suggest this error is caused by wrong syntax in the code. It leads to the termination of the program.
Exceptions: Exceptions are raised when the program is syntactically correct but the code resulted in an error. This error does not stop the execution of the program, however, it changes the normal flow of the program.
In the above example raised the ZeroDivisionError as we are trying to divide a number by 0.
Note: Exception is the base class for all the exceptions in Python. You can check the exception hierarchy here.
Try and Except in Exception Handling
Let us try to access the array element whose index is out of bound and handle the corresponding exception.
Second element = 2 An error occurred
A try statement can have more than one except clause, to specify handlers for different exceptions. Please note that at most one handler will be executed.
Error Occurred and Handled
If you change the value of ‘a’ to greater than or equal to 4, the output will be
Value of b = Error Occurred and Handled
The output above is so because as soon as python tries to access the value of b, NameError occurs.
In python, you can also use else clause on the
try-except block which must be present after all the except clauses. The code enters the else block only if the try clause does not raise an exception.
The output for above program will be :
-5.0 a/b result in 0
Finally Keyword in Python
Python provides a keyword finally, which is always executed after try and except blocks. The finally block always executes after normal termination of try block or after try block terminates due to some exception.
try: # Some Code.... except: # optional block # Handling of exception (if required) else: # execute if no exception finally: # Some code .....(always executed)
Can't divide by zero This is always executed
The raise statement allows the programmer to force a specific exception to occur. The sole argument in raise indicates the exception to be raised. This must be either an exception instance or an exception class (a class that derives from Exception).
The output of the above code will simply line printed as “An exception” but a Runtime error will also occur in the last due to raise statement in the last line. So, the output on your command line will look like
Traceback (most recent call last): File "003dff3d748c75816b7f849be98b91b8.py", line 4, in raise NameError("Hi there") # Raise Error NameError: Hi there
This article is contributed by Nikhil Kumar Singh(nickzuck_007)
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
- Python | Raising an Exception to Another Exception
- Multiple Exception Handling in Python
- Handling TypeError Exception in Python
- Handling NameError Exception in Python
- Handling OSError exception in Python
- Handling a thread's exception in the caller thread in Python
- Handling EOFError Exception in Python
- Exception Handling in C++
- Python | Reraise the Last Exception and Issue Warning
- Create an Exception Logging Decorator in Python
- How to pass argument to an Exception in Python?
- Test if a function throws an exception in Python
- How to print exception stack trace in Python?
- How to log a Python exception?
- How to print the Python Exception/Error Hierarchy?
- EnvironmentError Exception in Python
- How to handle a Python Exception in a List Comprehension?
- User-defined Custom Exception in Java
- Understanding Array IndexOutofbounds Exception in Java
- Types of Exception in Java with Examples