Fundamentals 4 min read

Comprehensive Guide to Python Exception Handling

This article explains Python exception handling fundamentals, covering basic try‑except, multiple exception catches, else/finally blocks, custom exceptions, exception propagation, raise‑from chaining, context manager handling, assert statements, generic suppression, and selective suppression with contextlib.

Test Development Learning Exchange
Test Development Learning Exchange
Test Development Learning Exchange
Comprehensive Guide to Python Exception Handling

01 Basic Exception Throw and Catch

try:
    # Attempt code that may raise an exception
    result = 10 / 0
except ZeroDivisionError:
    # Code executed when ZeroDivisionError is caught
    print("除数不能为0")

02 Multiple Exception Captures

try:
    x = int(input("请输入一个数字: "))
    y = int(input("请输入另一个数字: "))
    result = x / y
except ValueError:
    print("输入的不是有效的数字")
except ZeroDivisionError:
    print("除数不能为0")

03 Using else and finally

try:
    f = open("myfile.txt")
    # File operations...
except FileNotFoundError:
    print("文件未找到")
else:  # Executed if no exception occurs
    print("文件处理完成")
finally:  # Executed regardless of exception
    f.close()

04 Custom Exceptions

class MyException(Exception):
    pass

def some_function():
    raise MyException("这是一个自定义异常")

try:
    some_function()
except MyException as e:
    print(e)

05 Exception Propagation: Throw Inside Function, Catch Outside

def divide(x, y):
    if y == 0:
        raise ZeroDivisionError("除数不能为0")
    return x / y

try:
    result = divide(10, 0)
except ZeroDivisionError as e:
    print(e)

06 Using raise ... from ... to Specify Exception Cause

def outer():
    try:
        inner()
    except Exception as e:
        raise ValueError("外层错误") from e

def inner():
    raise KeyError("内层错误")

try:
    outer()
except ValueError as e:
    print(e)  # Prints exception chain information

07 Exceptions in Context Managers

with open("nonexistent_file.txt") as f:
    content = f.read()
    # If the file does not exist, IOError is automatically caught and the file is closed

08 Using assert for Condition Checks

def apply_discount(product, discount):
    price = int(product['price'] * (1.0 - discount))
    assert 0 <= price <= product['price'], "无效的折扣"
    return price

product = {'name': 'Widget', 'price': 100}
try:
    print(apply_discount(product, 1.5))  # Discount > 1 triggers assert
except AssertionError as e:
    print(e)

09 Exception Suppression (Not Recommended)

try:
    # Code that may raise an exception
    ...
except:
    pass  # Silently ignore all exceptions (discouraged)

10 Selectively Ignoring Specific Exceptions with contextlib.suppress

from contextlib import suppress

with suppress(FileNotFoundError):
    with open("missing_file.txt") as f:
        read_data(f)
    # No exception is raised if the file does not exist
pythonException Handlingtry-exceptContext ManagerAssertcustom-exceptionRaise
Test Development Learning Exchange
Written by

Test Development Learning Exchange

Test Development Learning Exchange

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.