Python特殊字符异常处理示例详解

Written by

in

文章目录
  • 异常是程序运行过程中发生的事件 会影响程序的正常执行 如果不处理,会导致程序崩溃 常见异常示例: 1 / 0 # ZeroDivisionError: division by zero ‘2’ + 2 # TypeError: can only concatenate str (not “int”) to str open(‘file.txt’) # FileNotFoundError
  • Python 中所有异常都继承自: BaseException └── Exception 常见异常类型: 异常类型 触发场景 NameError 使用未定义变量 TypeError 数据类型不匹配 ValueError 传入无效参数 IndexError 列表索引越界 FileNotFoundError 文件不存在 ZeroDivisionError 除以 0
  • 异常具有“向上传递”的特性: def func1(): return 10 / 0 def func2(): func1() try: func2() except ZeroDivisionError: print(“已捕获异常”) 下层未处理 → 向上层传递 直到被捕获或程序崩溃
  • 当内置异常无法满足需求时,可以自己定义: class AgeError(Exception): pass age = 16 if age < 18: raise AgeError(“未满18岁!”) 自定义异常的好处: 更符合业务语义 便于维护和调试
  • ✅ 建议: 精准捕获异常类型 不要滥用 except Exception 关键资源用 finally 或 with 合理使用自定义异常 ❌ 不建议: 空 except 吞掉异常不处理 用异常代替逻辑判断 到此这篇关于Python特殊字符异常处理示例详解的文章就介绍到这了,更多相关Python异常处理内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: 新手必踩的Python语法常见错误与异常处理指南 一文带你深入了解Python中的GeneratorExit异常处理 Python文件操作基础及异常处理 深入解析Python中的复杂异常处理机制 从基础到进阶带你玩转Python中的异常处理 python正则表达式去除两个特殊字符间的内容方法 Python随机生成带特殊字符的密码
  • 目录
    • 二、异常的类型
    • 三、异常处理核心:try-except
      • 1. 基本语法
      • 2. 捕获多个异常
      • 3. 捕获所有异常
    • 四、异常处理进阶结构
      • 1. try-except-else
      • 2. try-except-finally
      • 3. 完整结构
    • 五、主动抛出异常
      • 1. raise 语句
      • 2. assert 断言
    • 六、异常的传递机制
      • 七、自定义异常
        • 八、with 语句与异常
          • 1. 为什么需要 with?
          • 2. 使用 with
          • 3. 原理:上下文管理器
        • 九、异常处理最佳实践

          在 Python 编程中,程序错误主要分为三类:

          类型 说明
          语法错误 代码不符合 Python 语法规范,无法运行
          逻辑错误 程序能运行,但结果不符合预期
          运行时错误(异常) 程序在运行过程中发生的错误

          其中,我们今天重点讨论的就是——异常(Exception)

          • 异常是程序运行过程中发生的事件
          • 会影响程序的正常执行
          • 如果不处理,会导致程序崩溃

          常见异常示例:

          1 / 0
          # ZeroDivisionError: division by zero
          '2' + 2
          # TypeError: can only concatenate str (not "int") to str
          open('file.txt')
          # FileNotFoundError

          Python 中所有异常都继承自:

          BaseException
            └── Exception

          常见异常类型:

          异常类型 触发场景
          NameError 使用未定义变量
          TypeError 数据类型不匹配
          ValueError 传入无效参数
          IndexError 列表索引越界
          FileNotFoundError 文件不存在
          ZeroDivisionError 除以 0

          try:
              可能出错的代码
          except 异常类型:
              出错后的处理代码
          

          示例:

          try:
              x = 10 / 0
          except ZeroDivisionError:
              print("除数不能为0!")
          

          try:
              print(count)
              arr = [1,2,3]
              print(arr[5])
          except NameError as e:
              print("变量未定义:", e)
          except IndexError as e:
              print("索引越界:", e)
          

          try:
              ...
          except Exception as e:
              print("发生异常:", e)
          

          ⚠️ 不推荐滥用:
          捕获所有异常会掩盖真实问题,只建议在全局保护时使用

          try:
              x = 10 / 2
          except ZeroDivisionError:
              print("错误")
          else:
              print("没有异常时执行")
          
          • try 没异常 → 执行 else
          • try 有异常 → 不执行 else

          try:
              f = open("test.txt")
          except:
              print("出错")
          finally:
              print("无论如何都会执行")
          • 关闭文件
          • 释放资源
          • 断开连接

          try:
              ...
          except:
              ...
          else:
              ...
          finally:
              ...
          

          age = 15
          if age < 18:
              raise ValueError("年龄必须大于18岁")
          

          assert age >= 18, "年龄必须>=18"
          
          • 多用于测试阶段
          • 条件为 False 时抛出 AssertionError

          异常具有“向上传递”的特性:

          def func1():
              return 10 / 0
          def func2():
              func1()
          try:
              func2()
          except ZeroDivisionError:
              print("已捕获异常")
          • 下层未处理 → 向上层传递
          • 直到被捕获或程序崩溃

          当内置异常无法满足需求时,可以自己定义:

          class AgeError(Exception):
              pass
          age = 16
          if age < 18:
              raise AgeError("未满18岁!")

          自定义异常的好处:

          • 更符合业务语义
          • 便于维护和调试

          传统写法:

          file = open("a.txt")
          ...
          file.close()
          

          如果中途报错,文件可能无法关闭。

          with open("a.txt") as f:
              print(f.read())
          

          优势:

          • 自动释放资源
          • 更安全优雅

          支持 with 的对象都实现了:

          • __enter__()
          • __exit__()

          我们也可以自定义:

          class MyOpen:
              def __enter__(self):
                  print("进入")
              def __exit__(self, type, val, tb):
                  print("退出")
          

          ✅ 建议:

          • 精准捕获异常类型
          • 不要滥用 except Exception
          • 关键资源用 finallywith
          • 合理使用自定义异常

          ❌ 不建议:

          • 空 except
          • 吞掉异常不处理
          • 用异常代替逻辑判断

          到此这篇关于Python特殊字符异常处理示例详解的文章就介绍到这了,更多相关Python异常处理内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

          您可能感兴趣的文章:

          • 新手必踩的Python语法常见错误与异常处理指南
          • 一文带你深入了解Python中的GeneratorExit异常处理
          • Python文件操作基础及异常处理
          • 深入解析Python中的复杂异常处理机制
          • 从基础到进阶带你玩转Python中的异常处理
          • python正则表达式去除两个特殊字符间的内容方法
          • Python随机生成带特殊字符的密码

          站内搜索