python之异常机制处理

1.异常机制

1_1 try和except:

异常:程序无法继续执行了,例如:字符串和数字相加,除以0,对None进行操作

中断当前程序执行,然后打印出红字

Exception

error

捕捉异常的方式:关键字

try:代码块(逻辑)
except 异常类型(Exception):代码块(出异常之后,会执行这里)

例子如下

str1 = input("请输入8个长度以外的字符串:")try:print(f"获取输入字符串的第八个值:{str1[7]}")  # unexpected EOF while parsingexcept Exception as e:  # 获取异常的信息,然后赋值给变量 eprint(f"报错的异常为: {e},请检查!!!")

1_2 try和finally

1. try...except 捕获异常,出异常了执行except代码块的内容

2. try...finally

try:代码块
finally:无论异常是否发生,finally代码块内容一定会执行

例子如下

# try:
#     print("try下面的代码块执行!")
#     print("报错前的代码")
#     n = 1 / 0  # 一定会报错
#     print("报错后的代码")
# except:
#     print("except下面的代码块执行!")
#     n = 1 / 0
#
# finally:
#     print("finally下面的代码块执行!")# 问题:try执行代码的时候,遇到了报错的代码,那么之前的代码是否会执行?会
# 但是,报错后的同级代码,不会运行

# 注意:

# 1. 无论try和except会不会报错,finally都会执行

# 2. 只有try报错了,才会运行except

# 3. 如果try报错,并且except里面也报错了,会同时打印报错信息

示例如下

try:print("最外层 -- try代码块")try:print("里面 -- try代码块")n = 1 / 0except:print("里面 -- except代码块")n = 1/0except:print("最外层 -- except代码块")try:print("里面 -- try代码块")n = 1 / 0except:print("里面 -- except代码块")# 问题:如果正常执行,会打印哪几行的代码?
# 如果存在多个try、except的嵌套 -- 遵循try和except的运行逻辑,try不报错,就不会运行except# 问题:在最外层的try里面,加了报错代码,会打印哪几行?
# 一旦遇到报错的代码,就不会执行同级代码# 问题:在里面层的try里面,加了报错代码,会打印哪几行?
# 里面这层try、except已经做了正常的异常处理之后,就表示try已经全部运行成功

1_3 assert异常:

断言:预期结果 == 实际结果

断言:用关键字 assert + 表达式(表达式返回一个bool值)

我希望是一个什么结果 -- 元素定位,assert 标签是否存在 True False

如果表达式是False,就会出异常,后面可以加提示

示例:

username = input("请输入登录的账号:")
password = input("请输入登录的密码:")# if username == "admin" and password == "123":
#     print("欢迎成功登录qsdd用户系统!")assert username == "admin" and password == "123", f"Use case does not pass, please check data! username:{username}, passowrd:{password}"
print("欢迎成功登录qsdd用户系统!")

# 为什么用例需要用断言来做处理?

# 一条自动化用例,如果代码全部运行通过,没有报错,视为用例通过

# 反之,如果一旦报错,就视为用例失败

1_4 with和as:

with 代码 as 变量

with执行语句如果不出错就会把自己的值赋值给as后面的变量

用于文件读取,with块结束后,自动关闭文件 

# 第一种方式:
# file = open(r"/Volumes/attached/hcedu/vipCourse/pythonBasic/python_code/python_0307_234/day09/01 异常机制/demo.txt",
#             mode="r",
#             encoding="utf-8")
#
# msg = file.read()
# print(f"获取到的信息为: {msg}")
#
# file.close()  # 主动关闭文件# 第二种方式:
# with open(r"/Volumes/attached/hcedu/vipCourse/pythonBasic/python_code/python_0307_234/day09/01 异常机制/demo.txt", mode="r",
#           encoding="utf-8") as f:
#     pass# msg = f.read()# print(f"获取到的信息为: {msg}")# msg1 = f.read()  # I/O operation on closed file.
# print(f"获取到的信息为: {msg1}")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/835707.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据分析】 JupyterNotebook安装及使用简介

各位大佬好 ,这里是阿川的博客 , 祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 在数据分析中,一般用Pycharm编辑代…

codeforces round 149 div2(a,b,c,d)

手速场&#xff0c;可惜我傻逼卡 c c c了 题目链接 A #include<bits/stdc.h>using namespace std;#define int long long #define PII pair<int,int>void solve() {int n,k;cin>>n>>k;if(n<k){cout<<1<<\n;cout<<n<<\n;}…

VSCode:设置顶部文件标签页滚动条的宽度

使用VSCode打开多个文件后&#xff0c;顶部的文件标签可以通过滚动条进行滚动&#xff0c;但是缺点是该滚动条太窄了&#xff0c;不好选择。 可以通过如下方法修改改滚动条的宽度&#xff1a; 1.点击设置 2.选择工作台->编辑管理->Title Scrollbar Sizing->Large 3.可…

书生浦语训练营第四次课作业

基础作业 环境配置 拷贝internlm开发机内的环境 studio-conda xtuner0.1.17# 激活环境 conda activate xtuner0.1.17 # 进入家目录 &#xff08;~的意思是 “当前用户的home路径”&#xff09; cd ~ # 创建版本文件夹并进入&#xff0c;以跟随本教程 mkdir -p /root/xtuner0…

无需关注---使用docker-compose部署你的springboot框架的java项目

version: ‘3’ services: springboot: image: openjdk:11-jre-slim ports: - “20221:20221” volumes: - ./2022.jar:/app/2022.jar working_dir: /app command: [“java”, “-Xmx256m”, “-Xms128m”, “-jar”, “2022.jar”] # 调整堆内存大小 restart: always environm…

专项技能训练五《云计算网络技术与应用》实训8-1:建立基于OpenvSwitch的GRE隧道

文章目录 建立基于OpenvSwitch的GRE隧道1. 使用VMware安装2个CentOS 7虚拟机&#xff0c;安装时记得都开启CPU虚拟化&#xff0c;第一台命名为“Docker”&#xff0c;第二台命名为“KVM”。2. 安装完虚拟机后&#xff0c;进入虚拟机&#xff0c;修改网络配置&#xff08;onboot…

进程间通信(二)

共享内存 当进程A和进程B有一块共享的内存空间时&#xff0c;这两个进程之间的数据交互就会变的很简单&#xff0c;只需要像读取自己内存空间中的元素一样去读取数据即可。实现共享内存进行数据交互的一般步骤&#xff1a; 创建/打开共享内存内存映射数据交换断开与共享内存的…

任务:单域,域树的搭建

一、单域&#xff1a; 搭建所需的系统&#xff1a;win2016 sever&#xff0c;win10 1.在创建域前&#xff0c;先设置静态ip 先查看win2016 sever的IP&#xff0c; ip&#xff1a;192.168.154.133 网关&#xff1a;192.168.154.2 DNS服务器&#xff1a;192.168.154.2 设置…

【nodejs 命令行交互神器 - inquirer.js】

需求 大家在开发时&#xff0c;有时需要从命令行读取用户的输入&#xff0c;或者让用户选择。在nodejs中&#xff0c;这个怎么实现? 原生实现 ❌ process.stdin.setEncoding(utf8);process.stdin.on(readable, () > {let chunk;// 使用循环确保我们读取所有的可用输入wh…

局域网内监控软件有哪些:五款好用的网络监控神器分享

面对员工这种现象怎么办&#xff1f; 监控电脑最有效&#xff01; 局域网监控软件&#xff0c;你值得拥有&#xff01; 要想轻松监控电脑&#xff0c;这几款局域网内监控软件不容错过&#xff01;&#xff01;&#xff01; 一、域智盾软件 是一款专注于企业终端安全管理的软…

vue 中el-select联动 清空后无法点击选择后一个el-select

el-select选择器赋值为空后无法选中回显 原因&#xff1a; 焦点问题 背景&#xff1a;我是做了监听&#xff0c;因为需求要求选择街道后联动文号与项目名称&#xff0c;一个街道对应多个个文号与项目名称&#xff0c;因此当街道变化&#xff0c;需要清空之前的文号与项目…

流水灯效果探索与实现

在嵌入式系统或微控制器项目中&#xff0c;LED流水灯是一种常见的实验项目&#xff0c;它不仅能够展示基本的GPIO&#xff08;通用输入输出&#xff09;控制&#xff0c;还能通过不同的模式增加趣味性。本文将探讨四种不同的流水灯效果&#xff0c;并通过代码示例展示如何实现它…

Node.js -- 会话控制

文章目录 1. 会话介绍2. cookie 相关操作2.1 cookie 设置2.2 删除 cookie2.3 获取cookie 3. session 相关操作4. cookie 和session 的区别5. 补充知识 -- CSRF跨站请求伪造6. token 1. 会话介绍 所谓会话控制就是对会话进行控制 HTTP是一种无状态的协议&#xff0c;它没有办法…

中职大数据专业介绍:大数据技术应用

近年来&#xff0c;人工智能在经济发展、社会进步、国际政治经济格局等方面已经产生重大而深远的影响。规划纲要对“十四五”及未来十余年我国人工智能的发展目标、核心技术突破、智能化转型与应用&#xff0c;以及保障措施等多个方面都作出了部署。 据2020年全国教育事业发展统…

100条常见的c语言代码汇总上篇2(类型转换错误,忽略返回值,浮点数精度问题,逻辑错误,指针操作错误)

11. 类型转换错误 在C语言中&#xff0c;不恰当的类型转换可能导致数据丢失或程序行为异常。特别是在涉及不同大小或符号的整数类型&#xff0c;或者整数与浮点数之间的转换时&#xff0c;要特别小心。 代码案例&#xff1a; #include <stdio.h> int main() {unsigned …

两重惊喜!奥特曼预告GPT-4和ChatGPT重大更新,Open AI要放大招

OpenAI在今天官宣13日&#xff08;下周一10点&#xff09;开启线上直播&#xff0c;将会展示全新的ChatGPT demo的演示以及GPT-4的重大更新&#xff01; OpenAI首席执行官Sam Altman在X上表示&#xff0c;这些的发布会&#xff0c;公司不会宣布下一代对话式人工智能GPT-5或人工…

ue引擎游戏开发笔记(37)——实现造成伤害

1.需求分析&#xff1a; 在游戏中已经能够射击&#xff0c;并且能得到实际的落点反馈&#xff0c;但本质上这种射击没有任何实际数值伤害&#xff0c;为射击添加实际的子弹伤害数值。 2.操作实现&#xff1a; 1.思路&#xff1a;ue本身函数FPointDamageEvent就可以解决&#x…

win11安装各银行的网银助手都无法打开,双击没反应?

大神贴 右键网银助手属性&#xff0c;在目标后面敲一下空格&#xff0c;输入**-runapp**&#xff0c;应用即可。 如图示例&#xff1a;

【HDFS】关于HDFS-17497:在commit block时更新quota

链接:https://github.com/apache/hadoop/pull/6765 Ticket标题:The number of bytes of the last committed block should be calculated into the file length。 HDFS里,一个在写入的文件可能包含多个commited状态的块。 但是计算文件大小的时候,最后一个commited block并…

英语写作中“特别(殊)的”“特定的”“具体的”special、particular、specific、concrete的用法

一、我们在学英语时special 这个单词出现频率高&#xff0c;耳濡目染&#xff0c;所以也爱用&#xff0c;其实有时候省掉special 显得语气平和&#xff0c;表达更地道。例如&#xff1a; We provide services for special people like the disabled. &#xff08;我们只服务残…