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

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)

http://www.kler.cn/a/574425.html

相关文章:

  • 【搜索】P3654 First Step (ファーストステップ)
  • transformer架构解析{掩码,(自)注意力机制,多头(自)注意力机制}(含代码)-3
  • 个人博客自动化测试报告
  • Rust语言基础知识详解【七】
  • 自然语言处理:k均值聚类算法
  • nodejs去除本地文件html字符
  • 数据结构拓展:详解realloc(C++)
  • 【RabbitMQ】Spring Boot 结合 RabbitMQ 完成应用间的通信
  • HCIA-IP路由动态-RIP
  • 计算机网络笔记(一)——1.1计算机网络在信息时代中的作用
  • SpringBoot集成Sentry日志收集-1 (Sentry安装)
  • 论文粗读——Isometric 3D Adversarial Examples in the Physical World
  • Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
  • Linux网络环境配置及常用命令
  • JavaScript 基础语法
  • 【区块链 + 绿色低碳】东方易电城市微电网智能平台 | FISCO BCOS 应用案例
  • C++ 单词识别_牛客题霸_牛客网
  • flink重启策略
  • JMeter 断言最佳实践
  • plt和cv2有不同的图像表示方式和颜色通道顺序