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

python的异常处理

1 异常的概念

2 异常的捕获

"""
什么是异常:程序出现错误,bug,程序被中断
如果出现异常,不对异常处理,则程序中断,后面的程序不再执行异常的捕获:try...except
在有可能出现异常的程序加上try
"""
try:   # 捕获异常num = int(input("输入一个整数:"))print(num)
except Exception:  # 当出现异常时执行下面的语句print("请输入一个整数!!!!")print("66666666666")

"""
Exception: 是常规异常的父类(基类),如果不知道是哪一种类型的异常,可以归为Exception
"""
try:num = int(input("输入一个整数:"))result = 10 / numprint(result)
except ZeroDivisionError:   # 捕获不同类型的异常print("除数不能为0")
except ValueError:print("请输入正确的整数!")print("66666666666666")

"""
try--except--else
try--except--else--finallytry: 捕获异常,后面跟可能出现异常的程序
except: 当出现异常时,执行的语句
else: 如果没有出现异常,则执行的语句
finally: 不管有没有异常,都一定会执行的程序,一般用于比如关闭数据库,关闭文件等。
"""try:num = int(input("输入一个整数:"))result = 10 / num
except ZeroDivisionError:   # 捕获不同类型的异常print("除数不能为0")
except ValueError:print("请输入正确的整数!")
else:    # 程序没有出现异常才会执行print("程序没有出现异常,结果是:",result)
finally:  # 不管程序有没有异常,后面的语句都会被执行,一般用于关闭文件,关闭数据库等这些必要的操作。print("不管程序有没有异常,这句话一定会执行")print("66666666666666")

3 异常的传递

"""
一个函数出现了异常,它会传递给它的调用者,如果没有异常处理,则在主程序运行时会报错
"""
def demo1():return int(input("输入一个整数:"))def demo2():print(demo1())# 只需要在主程序中加上异常处理即可
try:demo2()
except Exception as result:print("发生了未知错误:",result)  # 当输入 45.3 发生了未知错误: invalid literal for int() with base 10: '45.3'

4 抛出raise异常

# 1、使用raise主动抛出异常,主程序中需要对这个异常进行捕获
def input_password():psd = input("请输入不少于6位数的密码:")if len(psd) >= 6:return psdprint("主动抛出异常")ex = Exception("密码长度不能小于6位数!")raise extry:print(input_password())
except Exception as result:print("发生了错误:",result)# 2、自定义一个异常类
# 像ValueError,ZeroDivisionError这些都是系统提供的异常类型,也可以自己定义一个异常类型
class PasswordTooShort(Exception):  # 继承Exceptionpasstry:password = input("设置密码(至少6位数)")if len(password) < 6:raise PasswordTooShortprint("设置密码成功!")
except PasswordTooShort:print("密码至少需要6位数")
http://www.xdnf.cn/news/4539.html

相关文章:

  • CODESYS开发环境下的快捷键和软件操作汇总
  • 《C++ Templates》:有关const、引用、指针的一些函数模板实参推导的例子
  • Ubuntu 安装 Keepalived
  • Linux 系统的进阶指令详解
  • 【软件设计师:算法】3.排序算法
  • 微信小程序pinia的应用
  • 对redis的深入了解
  • 【每日刷题】第2天
  • 互联网大厂Java求职面试:AI集成与云原生架构设计
  • Go 面向对象,封装、继承、多态
  • 拆解 Prompt 工程:五大场景驱动 DeepSeek 超越 ChatGPT
  • AUTOSAR图解==>AUTOSAR_SWS_WirelessEthernetTransceiverDriver
  • 【AI入门】CherryStudio入门3:结合FastMCP创建自己的MCP服务,实现哔哩视频查询
  • 梅特卡夫法则——AI与思维模型【97】
  • 单片机-STM32部分:7、GPIO输入 按键
  • ()初始化 和 { }初始化
  • PostgreSQL中“参数默认值实现伪重载“详解
  • Unable to ping server at localhost:1099解决
  • 【Linux庖丁解牛】—程序地址空间【进程地址空间 | 虚拟地址空间】
  • 每日一题洛谷P1025 [NOIP 2001 提高组] 数的划分c++
  • Python打卡 DAY 18
  • MySQL核心机制:日志系统、锁机制与事务管理的深度剖析
  • 六个仓库合并为一个仓库,保留master和develop分支的bat脚本
  • llama-Factory不宜直接挂接Ollama的大模型
  • 互联网大厂Java求职面试:分布式系统中向量数据库与AI应用的融合探索
  • FastDFS,分布式文件存储系统,介绍+配置+工具类
  • upload-labs靶场通关详解:第一关
  • 远程访问代理+内网穿透:火山引擎边缘网关助力自部署模型公网调用与全链路管控
  • 阿维塔汽车CAN总线数据适配技术解析与免破线数据采集实践
  • 模型中台建设全流程指南