A blog about C#, Python, Azure and full stack development

Handling Exceptions with Try-Except Blocks in Python

In the world of programming, errors are inevitable. Whether it’s due to unexpected user input, a faulty data source, or even a simple oversight in the code, errors can and will occur. To handle this, Python provides a robust mechanism to handle these errors gracefully: the try-except block. You may already be familiar with this construct as it is commonly implemented in many other programming languages.

What is an Exception?

In Python, and many other programming languages, an exception is an event that disrupts the normal flow of a program. Python knows about various types of exception and has a number of built-in types that help you deal with these errors, for example ValueError, TypeError, and ZeroDivisionError.

The Try-Except Block

The basic idea behind the try except block is to “try” a block of code and “catch” any exceptions that might occur. Here’s the basic syntax:

    # code that might raise an exception
except ExceptionType:
    # code to handle the exception

A Practical Example

Let’s consider a simple function that divides two numbers:

def divide_numbers(num1, num2): 
  return num1 / num2

This function works well until we try to divide by zero, which raises a ZeroDivisionError. To handle this, we can use a try-except block:

def divide_numbers(num1, num2): 
    result = num1 / num2 
    return result 
  except ZeroDivisionError: 
    return "Cannot divide by zero!

Now, if we call divide_numbers(5, 0), instead of the program crashing, the function will return “Cannot divide by zero!” so that the caller can handle it gracefully.


The try-except block is a powerful tool in a Python programmer’s arsenal. It allows for more resilient code that can handle unexpected errors gracefully. By anticipating potential issues and handling them proactively, we can create a smoother user experience and more robust applications. The purpose of exception handling is not about preventing every error (an impossible task), but about dealing with them in a way that makes sense for your application.