1. 异常(Exception)

定义

异常是程序运行过程中出现的错误事件,会中断正常执行。

作用

  • 防止程序崩溃,提高健壮性。
  • 提供处理错误的机制。

通用语法格式

# 常见异常触发(无需特别语法)
<有可能出错的语句>

示例代码

# 除以 0 会触发 ZeroDivisionError 异常
print(10 / 0)  

2. 异常捕获(try-except)

定义

try-except 用来捕获并处理程序运行时的异常。

作用

  • 避免程序因错误直接终止。
  • 可对不同错误类型做不同处理。

通用语法格式

try:
    可能出错的语句
except 异常类型 as 变量:
    处理异常的语句

示例代码

try:
    num = int(input("请输入整数:"))   # 可能抛 ValueError
    print(10 / num)                   # 可能抛 ZeroDivisionError
except ValueError as e:               # 捕获输入非整数
    print("输入错误:必须输入整数!", e)
except ZeroDivisionError as e:        # 捕获除零错误
    print("数学错误:除数不能为 0!", e)

3. 异常完整结构(try/except/else/finally)

定义

异常处理的完整框架:

  • try:放可能出错的代码
  • except:异常发生时执行
  • else:无异常时执行
  • finally:总会执行

作用

保证逻辑清晰,适合复杂业务。

通用语法格式

try:
    可能出错的语句
except 异常类型:
    处理异常的语句
else:
    没有异常时执行的语句
finally:
    不论是否有异常都执行的语句

示例代码

try:
    f = open("data.txt", "r")        # 可能文件不存在
    content = f.read()
except FileNotFoundError:            # 文件未找到异常
    print("错误:文件不存在!")
else:
    print("文件内容:", content)      # 无异常才执行
finally:
    f.close()                        # 一定执行,释放资源

4. 异常的传递性

定义

异常未在当前函数处理时,会沿调用链向上传递,直到被捕获。

作用

  • 灵活选择在合适层级捕获异常。
  • 避免过度处理导致错误难以发现。

通用语法格式

def 函数1():
    可能抛出异常
def 函数2():
    调用函数1
try:
    函数2()
except 异常类型:
    处理异常

示例代码

def func1():
    return 10 / 0   # 抛出 ZeroDivisionError

def func2():
    return func1()  # 异常未捕获,继续传递

try:
    func2()
except ZeroDivisionError:
    print("外层捕获了除零异常")

5. 主动抛出异常(raise)

定义

raise 用来手动触发异常

作用

  • 用于数据校验、业务规则控制。

通用语法格式

raise 异常类型("错误信息")

示例代码

def set_age(age):
    if age < 0:
        raise ValueError("年龄不能为负数")   # 主动抛出异常
    return age

set_age(-5)

6. 自定义异常

定义

通过继承 Exception 或其子类,创建业务相关的异常类型

作用

  • 提升代码可读性和可维护性。

通用语法格式

class 自定义异常名(Exception):
    pass

示例代码

class NegativeScoreError(ValueError):
    """自定义异常:分数不能为负"""
    pass

def set_score(score):
    if score < 0:
        raise NegativeScoreError("分数不得为负")

7. 文件/资源管理中的异常

定义

文件或数据库操作出错时可能导致资源未关闭。

作用

  • 通过 finallywith 保证资源释放。

通用语法格式

with open(文件名, 模式) as f:
    操作文件

示例代码

try:
    with open("data.txt", "r", encoding="utf-8") as f:
        print(f.read())   # 文件操作
except FileNotFoundError:
    print("错误:文件不存在")

8. 模块(Module)

定义

模块是一个 Python 文件,内部包含函数、变量、类。

作用

  • 代码复用
  • 功能分层

通用语法格式

import 模块名
from 模块名 import 成员

示例代码

import math
print(math.sqrt(16))   # 4.0
print(math.pi)         # 3.1415926...

9. 自定义模块

定义

开发者创建的 .py 文件可作为模块导入。

作用

  • 封装功能代码。

通用语法格式

# mymodule.py
def 函数名():
    ...
# main.py
import mymodule
mymodule.函数名()

示例代码

mymodule.py

def greet(name):
    print("Hello,", name)

main.py

import mymodule
mymodule.greet("Alice")

10. 包(Package)

定义

包是包含 __init__.py 文件的目录,用于组织多个模块。

作用

  • 项目结构清晰
  • 支持模块层次化管理

通用语法格式

from 包名 import 模块名
from 包名.子包 import 模块名

示例代码

目录:

mypkg/
    __init__.py
    calc.py

calc.py

def add(a, b):
    return a + b

main.py

from mypkg.calc import add
print(add(2, 3))

11. 安装第三方包

定义

第三方包是 Python 社区开发的功能库。

作用

  • 扩展功能(如网络、数据分析、机器学习)。

通用语法格式

pip install 包名

示例代码

import requests
r = requests.get("https://httpbin.org/get")
print(r.status_code)

12. 模块搜索路径

定义

Python 在导入模块时,会按 sys.path 中的路径顺序查找。

作用

  • 控制自定义模块导入位置。

通用语法格式

import sys
print(sys.path)

示例代码

import sys
print("\n".join(sys.path))  # 打印所有模块搜索路径

13. 综合小项目:安全除法库

定义

结合模块与异常机制,构建安全的除法工具。

作用

  • 演示模块化 + 异常处理结合应用。

通用语法格式

# core.py
class 异常类(Exception):
    pass
def 函数名():
    raise 异常类("错误信息")

示例代码

safe_math/core.py

class DivideByZero(Exception):
    """自定义异常:除数不能为 0"""
    pass

def safe_div(a, b):
    if b == 0:
        raise DivideByZero("除数不能为 0")
    return a / b

main.py

from safe_math.core import safe_div

try:
    print(safe_div(10, 0))
except Exception as e:
    print("错误:", e)

14. 总结

  • 异常:处理错误,保证程序健壮。
  • 模块:复用代码。
  • :组织模块,结构清晰。
  • 第三方库:扩展功能,提升开发效率。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐