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

【python基础——异常BUG】

什么是异常(BUG)

检测到错误,py编译器无法继续执行,反而出现错误提示
如果遇到错误能继续执行,那么就捕获(try)
1.得到异常:try的执行,try内可以捕获一个异常
2.预案执行:except后面的语句
3.传入异常:except … as uestc+print(uestc)
4.没有异常:else…
5.鉴定完毕,收尾的语句(必然执行):finally #常应用于f.close()

BUG举例:

打开一个不存在的文件: No such file or directory: ‘不存在的文件’

异常的情况:

1.整个程序因为一个BUG失灵崩溃中断
2.对BUG提醒,程序继续进行(*)
显然,我们遇到的BUG大多因为1,但是我们希望是2

捕获异常:

1.所有异常,提前假设某处出现异常,做好预备工作

 	try:
        可能发生错误的代码
    except:
        应对措施
    except Exception as e:#exception是所有异常的父类,可以通过不具体指定也了解该异常
        print("捕捉到异常,你猜猜在哪(。・∀・)ノ")
    else:
        print("没有异常(●'◡'●)")
    finally:
        print("无论如何你都会看到我,因为我是finally(*/ω\*)")

例子

# f=open("linux.txt","r",encoding="utf-8")#没有此文件,故出现红字提示异常中断
try:
    f = open("linux.txt", "r", encoding="utf-8")
except Exception as e:
    print("出现异常,猜猜是谁(。・∀・)ノ:", e)
    f = open("bug.txt", "w", encoding="utf-8")# 写入不存在的文件会自动创建,但是读入不可以

在这里插入图片描述

2.捕获指定异常 :先运行代码,如果报错,把错误类型复制然后except这种类型异常的处理

   try:
       print(TOT)
   except NameError as namebug
       print("namebug变量名称未定义错误")

在这里插入图片描述

在这里插入图片描述

3.捕获指定多种异常(但仍然捕获一个,只是不限类型)

  try:
    a=1/0
except (ZeroDivisionError,NameError) as e2:
    print("捕捉到异常啦!o(* ̄▽ ̄*)ブ :",e2)

在这里插入图片描述

try:
    a=1/0 #a=1/10则有异常
except:
    print("出现异常ヽ(*。>Д<)o゜")
else:
    print("没有异常φ(゜▽゜*)♪")
finally:
    print("鉴定完毕,收工(づ ̄ 3 ̄)づ")#不管有无异常都要执行

在这里插入图片描述

在这里插入图片描述

异常的传递

嵌套函数的内部如果异常且没有捕获,那么这个异常会传递给调用它的函数
如果嵌套函数生命周期内都没有捕获异常,程序就会报错


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

相关文章:

  • 【20250109】Nature子刊:一种可改善帕金森患者冻结步态的柔性可穿戴机器人系统...
  • 【Typecho】Tbeautify插件开发与使用
  • 【Docker】安装registry本地镜像库,开启Https功能
  • 解读若依框架中的`@Excel` 和 `@Excels` 注解
  • 【跨域问题】
  • MySQL中的SPJ与None-SPJ算子详解
  • 音频-扬声器和麦克风
  • 【机器学习篇】探索机器学习在农业中的应用:从作物预测到精准农业
  • 一块钱的RISC-V 32位芯片
  • Leetcode Hot100 第六题 221. 最大正方形
  • IP 地址与蜜罐技术
  • K8s Pod OOMKilled,监控却显示内存资源并未打满
  • Python AI教程之十五:监督学习之决策树(6)高级算法C5.0决策树算法介绍
  • HTML5 语义元素:网页构建的新时代
  • 【C++】xml烧录 调用twinCat流程自动化
  • [免费]微信小程序(高校就业)招聘系统(Springboot后端+Vue管理端)【论文+源码+SQL脚本】
  • 问题清单:@DS数据库配置注解失效
  • 标题: [原创](Modern C++)现代C++的关键性概念: 初步了解std之下的几个常用子命名空间
  • DockerCompose玩转Kafka单体与集群部署,Redpanda Console助力可视化管理
  • 5.在 Vue 3 中使用 ECharts 实现菱形渐变雷达图