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

python异常机制

当代码出现异常后底下代码都不会被执行了,也就是程序崩溃了。当然能避免异常的话尽量避免但是有的时候这个是没有办法避免的。

异常处理

(注:异常处理是从上往下处理,所以编写代码时要注意)

语法

try:可能出现异常的代码
except:如果右异常执行的代码
finally:无论是否存在异常都会被执行的代码
#finally可写可不写,try和except必须一起出现

例子

def func():try:n1 = int(input('输入第一个数字'))n2 = int(input('输入第一个数字'))per = input('输入运算符号')if per =="+":result = n1+n2elif per =="-":result = n1-n2elif per =="*":result = n1*n2elif per =="/":result = n1/n2#选不同的错误类型会出现不同的解决方法except ZeroDivisionError:print('除数不能为零')except ValueError:print('请输入数字')
func()

上述例子中出现了两个错误,但是实际开发中可能出现多种你无法相像的错误这时就要用到except的一种情况

例子

try:l=[]l.remove()
except Exception as err:print('出错了',err)

结果

例子 

当我们在进行文件操作时,最后都需要释放文件流,所以都需要close()

stream = None
try:
#这个stream在try中,是局部变量,finally不能用stream = open(r'D:/桌面/test','r')
except Exception as err:print('出错了',err)
finally:if stream:stream.close()

结果

注:如果代码中有finally,前面return不会真的return出去。只有执行了finally后才会退出

抛出异常

例子

使用raise关键字,相当于自定义一个异常

def register():user = input('请输入')if len(user)<6:raise Exception('必须六位以上')else:print('输入用户名',user)try:register()
except Exception as err:print(err)print('注册失败')
else:print('注册成功')

结果


不嫌弃的点点关注,点点赞 ଘ(੭ˊᵕˋ)੭* ੈ✩‧₊˚  

相关文章:

  • YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information
  • 骨传导耳机怎么挑选?资深测评师一文教你搞定怎么选!
  • 外包干了8天,技术退步明显。。。。。
  • 网络编程套接字(2)——Socket套接字
  • IP传输方式——组播
  • #14vue3生成表单并跳转到外部地址的方式
  • 数据结构从入门到精通——链表
  • centos7 python3.12.1 报错 No module named _ssl
  • 【2024.03.05】定时执行专家 V7.1 发布 - TimingExecutor V7.1 Release
  • UE4 Niagara 关卡3.4官方案例解析
  • 活动预告|听云猿生数据创始人 CEO 曹伟分享云数据库行业十余年经验总结
  • 这个超火的黑客小工具,可以通过WiFi解锁特斯拉
  • 测试用例编写详解
  • 大语言模型LLM学习梳理
  • 【Docker】Windows11操作系统下安装、使用Docker保姆级教程
  • Android Volley源码解析
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • egg(89)--egg之redis的发布和订阅
  • ES学习笔记(12)--Symbol
  • hadoop集群管理系统搭建规划说明
  • JAVA_NIO系列——Channel和Buffer详解
  • jquery ajax学习笔记
  • JS实现简单的MVC模式开发小游戏
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • leetcode388. Longest Absolute File Path
  • vuex 笔记整理
  • Vue--数据传输
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 动态规划入门(以爬楼梯为例)
  • 猴子数据域名防封接口降低小说被封的风险
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 用mpvue开发微信小程序
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #include到底该写在哪
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (第27天)Oracle 数据泵转换分区表
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (分享)自己整理的一些简单awk实用语句
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (五)MySQL的备份及恢复
  • (一)80c52学习之旅-起始篇
  • (一)为什么要选择C++
  • ***检测工具之RKHunter AIDE
  • .Net 4.0并行库实用性演练
  • .NET MVC第五章、模型绑定获取表单数据
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法