Try…Except in Python | Exception handling in Python (part-17)

Posted by

Exception Handling

When an error occurs, or exception as we call it, Python will normally stop and generate an error message. These exceptions can be handled using the try statement:

try:
    print(x)
except:
    print("An exception occurred")
  • The try block lets you test a block of code for errors.
  • The except block lets you handle the error.
  • The else block lets you execute code when there is no error.
  • The finally block lets you execute code, regardless of the result of the try- and except blocks.

Here is a more detailed example incorporating all these blocks:

try:
    print("Hello")
    x = 1 / 0
except ZeroDivisionError:
    print("Division by zero error")
else:
    print("Nothing went wrong")
finally:
    print("The 'try except' is finished")

In this example:

  • The try block will execute the print statement and then attempt to divide by zero.
  • The except block will catch the division by zero error and print an appropriate message.
  • The else block will not execute because there was an error.
  • The finally block will execute regardless of the result of the try and except blocks.

Basic Try-Except

try:
    print(x)  # x is not defined
except:
    print("An exception occurred")

Output:

An exception occurred

Catching Specific Exceptions

try:
    print(1 / 0)  # Division by zero
except ZeroDivisionError:
    print("Cannot divide by zero!")

Output:

Cannot divide by zero!

Multiple Exceptions

try:
    print(1 / 0)  # Division by zero
    print(x)  # x is not defined
except ZeroDivisionError:
    print("Cannot divide by zero!")
except NameError:
    print("Variable is not defined!")

Output:

Cannot divide by zero!

Using Else

try:
    print("Hello World!")
except:
    print("An exception occurred")
else:
    print("Nothing went wrong")

Output:

Hello World!
Nothing went wrong

Finally Block

try:
    print(x)  # x is not defined
except:
    print("An exception occurred")
finally:
    print("The 'try except' block is finished")

Output:

An exception occurred
The 'try except' block is finished

Full Example with All Blocks

try:
    print("Hello")
    x = 1 / 0  # This will raise a division by zero error
except ZeroDivisionError:
    print("Division by zero error")
else:
    print("Nothing went wrong")
finally:
    print("The 'try except' is finished")

Output:

Hello
Division by zero error
The 'try except' is finished

Example with Custom Exception

class CustomError(Exception):
    pass

try:
    raise CustomError("This is a custom error")
except CustomError as e:
    print(e)
finally:
    print("The 'try except' block is finished")

Output:

This is a custom error
The 'try except' block is finished

Examples as per above images

Multiple Exceptions

try:
    print(x)  # x is not defined
except NameError:
    print("Variable x is not defined")
except:
    print("Something else went wrong")

output:
Variable x is not defined

Try-Except-Finally

try:
    print(x)  # x is not defined
except:
    print("Something went wrong")
finally:
    print("The 'try except' is finished")

Output:
Something went wrong
The 'try except' is finished

Try-Except-Else

try:
    print("Hello")
except:
    print("Something went wrong")
else:
    print("Nothing went wrong")


output:
Hello
Nothing went wrong

Nested Try-Except-Finally for File Handling

try:
    f = open("demofile.txt")
    try:
        f.write("Lorum Ipsum")
    except:
        print("Something went wrong when writing to the file")
    finally:
        f.close()
except:
    print("Something went wrong when opening the file")

Output:
Something went wrong when writing to the file

Examples that illustrate how to raise exceptions :

Raising a Generic Exception

x = -1

if x < 0:
    raise Exception("Sorry, no numbers below zero")

Output:

Exception: Sorry, no numbers below zero

Raising a TypeError

x = "hello"

if not type(x) is int:
    raise TypeError("Only integers are allowed")

Output:

TypeError: Only integers are allowed
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x