Showing posts with label Python exception handling. Show all posts
Showing posts with label Python exception handling. Show all posts

Monday, March 16, 2026

Lesson 15: Python Exception Handling and Debugging | Coding Class Series

March 16, 2026 0



Lesson 15: Python Exception Handling and Debugging | Coding Class Series

Introduction

Welcome to Lesson 15!
In this lesson, we will learn how to handle errors in Python programs using exceptions and debug our code.
Exception handling is important to prevent program crashes and manage unexpected situations gracefully.


1. What is an Exception?

An exception is an error that occurs during the execution of a program.
Common examples:

  • Division by zero
  • File not found
  • Index out of range
# Division by zero
a = 10
b = 0
print(a / b)  # Raises ZeroDivisionError

2. Try and Except

Use try and except to catch and handle exceptions.

try:
    a = 10
    b = 0
    print(a / b)
except ZeroDivisionError:
    print("Error: Cannot divide by zero!")

3. Handling Multiple Exceptions

You can handle different types of exceptions separately.

try:
    numbers = [1, 2, 3]
    print(numbers[5])
    a = 10 / 0
except IndexError:
    print("Index not found in the list!")
except ZeroDivisionError:
    print("Cannot divide by zero!")

4. Using else and finally

  • else: runs if no exception occurs
  • finally: always runs, even if an exception occurs
try:
    a = 10
    b = 2
    print(a / b)
except ZeroDivisionError:
    print("Error: Cannot divide by zero!")
else:
    print("Division successful!")
finally:
    print("This runs always!")

5. Raising Exceptions

You can manually raise exceptions using raise.

age = -5

if age < 0:
    raise ValueError("Age cannot be negative!")

6. Debugging Tips

  • Print statements: Check the values of variables at different points.
  • Python debugger (pdb): Step through code line by line.
  • IDE debugging tools: PyCharm, VS Code allow breakpoints and watches.
import pdb

x = 5
y = 0

pdb.set_trace()  # Start debugging here
z = x / y
print(z)

7. Practice Exercises

  1. Write a program that asks the user for two numbers and divides them. Handle division by zero errors.
  2. Open a file that may not exist and handle FileNotFoundError.
  3. Raise an exception if a user's input string length is less than 5.
  4. Use pdb to debug a program that calculates the factorial of a number.


Lesson 12: Python Exception Handling and Debugging | Coding Class Series

March 16, 2026 0



Lesson 12: Python Exception Handling and Debugging | Coding Class Series

Introduction

Welcome to Lesson 12!
In this lesson, we will learn how to handle errors in Python using exceptions and use debugging techniques to make our programs more robust and error-free. Exception handling ensures that your program does not crash unexpectedly.


1. What is an Exception?

An exception is an error that occurs during program execution.
Examples: ZeroDivisionError, FileNotFoundError, ValueError.

# Example: Division by zero
a = 10
b = 0
print(a / b)  # This will cause ZeroDivisionError

2. Using try and except

The try block contains code that might raise an exception.
The except block handles the exception gracefully.

try:
    a = 10
    b = 0
    result = a / b
except ZeroDivisionError:
    print("Error: Cannot divide by zero!")

3. Handling Multiple Exceptions

You can catch multiple types of exceptions:

try:
    num = int(input("Enter a number: "))
    result = 10 / num
except ZeroDivisionError:
    print("Error: Division by zero!")
except ValueError:
    print("Error: Invalid input, not a number!")

4. Using else and finally

  • else → Executes if no exception occurs
  • finally → Executes always, even if an exception occurs
try:
    file = open("example.txt", "r")
except FileNotFoundError:
    print("File not found!")
else:
    print(file.read())
finally:
    print("Execution finished.")

5. Raising Exceptions

You can raise your own exceptions using raise:

age = int(input("Enter your age: "))
if age < 18:
    raise ValueError("You must be 18 or older to proceed.")

6. Debugging Techniques

  1. Print statements – Track variable values and flow.
  2. Using IDE debugger – Step through code line by line.
  3. Logging module – Log errors for later analysis.
import logging

logging.basicConfig(filename="app.log", level=logging.ERROR)

try:
    x = 10 / 0
except ZeroDivisionError as e:
    logging.error("An error occurred: %s", e)

7. Practice Exercises

  1. Write a program that asks for two numbers and divides them. Handle ZeroDivisionError and ValueError.
  2. Open a file safely using try-except-else-finally.
  3. Raise a custom exception if a user enters a negative number.
  4. Implement logging to record all exceptions in your program.


Lesson 8: File Handling and Exception Handling | Coding Class Series

March 16, 2026 0



Lesson 8: File Handling and Exception Handling | Coding Class Series

Introduction

Welcome to Lesson 8!
In this lesson, we will learn about file handling in Python and how to manage errors using exception handling. These skills are essential to make your programs robust and data-driven.


1. File Handling

File handling allows your program to read from and write to files on your computer.

Opening a file:

file = open("example.txt", "w")  # 'w' mode to write
file.write("Hello, Python!")
file.close()

Reading a file:

file = open("example.txt", "r")  # 'r' mode to read
content = file.read()
print(content)  # Output: Hello, Python!
file.close()

Using with statement (recommended):

with open("example.txt", "r") as file:
    content = file.read()
    print(content)

File Modes:

  • r → read
  • w → write (overwrite)
  • a → append
  • rb / wb → read/write binary

2. Exception Handling

Exceptions occur when your program runs into an error.
Python allows you to handle exceptions gracefully using try, except, finally blocks.

Example:

try:
    num = int(input("Enter a number: "))
    print(10 / num)
except ZeroDivisionError:
    print("Cannot divide by zero!")
except ValueError:
    print("Invalid input! Enter a number.")
finally:
    print("Execution completed.")

Key Points:

  • try: Block where error might occur
  • except: Handles specific errors
  • finally: Executes always, even if an error occurs

3. Combining File Handling and Exceptions

You can handle file errors with exception handling:

try:
    with open("data.txt", "r") as file:
        print(file.read())
except FileNotFoundError:
    print("File not found. Please check the file name!")

Benefits:

  • Prevents program crashes
  • Provides useful error messages
  • Improves program reliability

4. Practice Exercises

  1. Create a file notes.txt and write 5 lines of text in it.
  2. Read the file and count the number of words.
  3. Write a program that asks the user for a filename and prints its content. Handle errors if the file does not exist.
  4. Create a program that divides two numbers and handles division by zero and invalid input using exception handling.