当前位置: 首页 > news >正文

Python学习第十天

异常

        程序执行过程中出现的各种各样的错误。

语法

  • try :需要处理异常的代码块

  • except: 异常名称1 as 异常别名1:异常1处理 补偿或者回滚处理

  • else:try代码块中正确执行后执行的代码 可以将下一步写到这里(可以有else也可以没有)

  • finally:无论是否报异常都要执行最后的代码,资源的释放、最终要执行的代码或者其他部分

list = [1,2,3]
try:
    # 为list[3]是IndexError
    list[2]
except IndexError as e:
    # 捕获错误
    print('index error:',e)
except TypeError as e:
    # 类型错误
    print('TypeError error:', e)
else:
    # 只有try中正确执行了 才会执行
    print('else code block')
finally:
    # 最终都要执行
    print('finally code block')

常见异常

不知道的保存后续来查看下就行了,或者不知道也就可以写他们的基类

异常名称基类描述
BaseException-所有内置异常的基类,通常不直接捕获。
ExceptionBaseException所有内置、非系统退出异常的基类,用户自定义异常通常继承此类。
IndexErrorException当序列下标超出范围时引发(如列表、元组、字符串)。
AttributeErrorException当对象没有指定属性时引发(如访问不存在的属性)。
ImportErrorException当导入模块或模块中的对象失败时引发。
KeyErrorException当字典中不存在指定的键时引发。
TypeErrorException当操作或函数应用于不适当类型的对象时引发(如对整数和字符串相加)。
KeyboardInterruptBaseException当用户按下中断键(如 Ctrl+C)时引发。
MemoryErrorException当内存不足时引发。
NameErrorException当尝试访问未定义的变量或名称时引发。
OSErrorException操作系统相关错误(如文件未找到、权限不足)。
StopIterationException当迭代器没有更多值可返回时引发。
IndentationErrorException当代码缩进不正确时引发。
TabErrorIndentationError当代码中混用了 Tab 和空格时引发。
SyntaxErrorException当代码语法错误时引发。
ValueErrorException当函数接收到正确类型但值不合适的参数时引发(如 int("abc"))。
ZeroDivisionErrorException当除数为零时引发。
UnicodeErrorValueError与 Unicode 相关的编码或解码错误。
RuntimeErrorException当检测到不明确的错误时引发,通常是程序逻辑错误。
AssertionErrorException当 assert 语句失败时引发。

异常抛出

        主动抛出异常信息(类似java中的throw new Exception),可以抛出业务性的异常信息。

语法:

  •   raise Exception('业务信息')

  •   Python3中,你可以使用 raise from 来保留原始异常的上下文信息raise Exception('抛出的异常') from e

# 主动抛出异常
# 比如登录
username = input("请输入用户名: ")
password = input("请输入密码: ")
try:
    # 判断 连接数据库查询 用户名,密码是否正确
    if username != 'admin':
        raise Exception("用户名不正确,请输入正确用户名")
    if password != '123456':
        raise Exception("密码不正确,请输入正确密码")
except Exception as e:
    print('Exception error:', e)

# python3 中的 raise 异常('要抛出的业务异常') from e
try:
    result = 10 / 0
except ZeroDivisionError as e:
    raise ValueError("除数不能为0啊") from e

自定义异常

  • 必须得继承自Exception或BaseException

  • 成员信息可以自行定义,命名要按照...Error的格式进行命名。

  • 一般在格式为__init__(self,message='',code='')中处理对应的异常信息

# 后续可能会封装一个 类似于Business的业务异常
class UserLoginError(Exception):
    def __init__(self, code=1000):
        self.code = code
        if code == 1000:
            message = '用户名不正确,请输入正确用户名'
        else:
            message = '密码不正确,请输入正确密码'
        super().__init__(message)

# 主动抛出异常
# 比如登录
username = input("请输入用户名: ")
password = input("请输入密码: ")
try:
    # 判断 连接数据库查询 用户名,密码是否正确
    if username != 'admin':
        raise UserLoginError(1000)
    if password != '123456':
        raise UserLoginError(1001)
except UserLoginError as e:
    print(e)

相关文章:

  • 数据库复习(第五版)- 第六章 关系数据理论
  • 阿里云MaxCompute面试题汇总及参考答案
  • Electron-Forge + Vue3 项目初始化
  • 010---基于Verilog HDL的分频器设计
  • 二阶RC+PWM实现DDS
  • 风控模型算法面试题集结
  • Python可视化——地理空间型图表(自用)
  • 2025年Q1起重机指挥证理论考试题库
  • Vue Hooks 深度解析:从原理到实践
  • Tomcat 新手入门指南
  • Java线程池的分析和使用
  • K8s 1.27.1 实战系列(三)安装网络插件
  • hive sql limit offset不起作用
  • 深入解析 Flink 批量插入 MariaDB 不生效问题
  • Linux - 网络基础(网络层,数据链路层)
  • [Python入门学习记录(小甲鱼)]第4章 分支与循环
  • 详细讲解ecovadis奖牌分类
  • 美股表格数据:如何获取和分析历史高频分钟回测数据
  • IDEA与Maven使用-学习记录(持续补充...)
  • EasyBCD,多系统名称或启动顺序的修改,用来配置与调整启动配置数据(BCD)
  • 如何建设网站子页/昆明百度推广开户费用
  • 网站模板 带数据库/广州网站优化费用
  • 网站策划工作条件/上海网站seo外包
  • dw做网站的流程/广州疫情今天最新消息
  • 城市建设网站鹤岗市/网站热度查询
  • 网站备案号查询/重庆疫情最新数据