Python

Understanding Exception Handling in Python

Understanding Exception Handling in Python

What is an Exception in Python

An event that occurs during the execution of the program and obstructs the regular flow of the program's instructions is an exception. A Python script typically raises an exception when it comes across a situation that it cannot handle. A Python object that represents an error is called an exception.
When a Python script encounters an exception, it must either deal with it right away or quit and stop working.

Code Example of an Exception

Let's take an example code when an exception occurs when we try to divide a number with 0.

a = 100

print(a/0)

Output

Traceback (most recent call last):

  File "./prog.py", line 2, in <module>

ZeroDivisionError: division by zero

Handling an Exception

If your program contains any suspicious code that could cause an exception, you can protect it by enclosing it in a try: block. Include an except: statement after the try: block, then a block of code that solves the issue as elegantly as possible.

Code Example of an Exception Handling:

Let's take an example code where we are handling the above ZerDivisionError Exception.

try:

    a = 100

    print(a/0)


except:

    print("There is some error in your code")

Output:

There is some error in your code

Catching and Handling specific Exceptions:

To specify handlers for various exceptions, a try statement may contain more than one except clause. Please be aware that only one handler will be run at a time. The standard syntax for adding particular exceptions is:

Syntax

try:

    # statement(s)

except ZeroDivisionError:

    # statement(s)

except ValueError:

    # statement(s)

Example: let's take an example code where we are handling ZeroDivisionError Specifically.

try:

    a = 100

    print(a/0)


except ZeroDivisionError:

    print("You can divide any number by 0")


except:

    print("An Unknown Error Has Neen Occured")

Output

You can divide any number by 0

Try with Else Clause

Python also supports the else clause, which must come after all except clauses, in the try-except block. Only when the try clause fails to throw an exception does the code move on to the else block.

Example

Let's take an example code where we are handling the exception with the else clause.

try:

    a = 100/1


except ZeroDivisionError:

    print("You can divide any number by 0")


else:

    print(a)

Output

100.0

Finally Keyword in Python

The finally keyword is available in Python, and it is always used after the try and except blocks. The final block is always executed after the try block has terminated normally or after the try block has terminated for some other reason.

Example

Let's take an example code where we are handling the exception using Finally Keyword.

try:

    a = 100/0


except ZeroDivisionError:

    print("You can divide any number by 0")


finally:

    print("Finally always runs")

Output

You can divide any number by 0

Finally always runs

Raising Exceptions in Python

We can also raise exceptions in Python for our needs. This can be done using raise keyword.

Example

Let's take an example code where we are raising our custom exception.

try:

    raise MyException("A Custom Exception is Raised")


except MyException:

    print("My Custom Exception")

Output

Traceback (most recent call last):

  File "./prog.py", line 2, in <module>

NameError: name 'MyException' is not defined


During handling of the above exception, another exception occurred:


Traceback (most recent call last):

  File "./prog.py", line 4, in <module>

NameError: name 'MyException' is not defined