Python第七十四讲 异常处理完全精通 try-except零基础保姆级教程

在前面一部分的学习当中, 我们依次对判断这回事、循环的用法、那所谓的四大容器, 还有关于文件进行批量自动化处理的相关知识点, 全部都进行了学习。

你一定遇到过这种崩溃心态:

在代码运行状态完全正确的前提下, 一旦输入的内容发生错误, 应用程序就会立刻出现闪退这一情况。

当发现文件不存在的时候, 程序会直接显示红色的错误文字把整个操作停下来。

把数字输入了中文内容之后, 程序在瞬间就终止了。

在进行数据的批量处理操作时候, 如果其中出现了哪怕一个错误, 那么就会导致整体的所有数据都报废掉。

就是从今天的这一个课开始, 那么你的代码, 它就可以完全地跟崩溃这个词说再见了。

在这节课里面, 我们会学习到关于异常处理这一块的最为关键的工程方面的能力, 具体是使用try这种格式来进行操作的。

所有的工作项目、所有的自动化脚本、所有的爬虫程序以及所有的后台程序, 这一些东西都得百分之百加上。

一、什么是异常?(通俗大白话)

错误, 实际上是被分成了两种种类。

  1. 代码的编写是有错误的, 标点符号以及缩进的问题处理得并不正确, 这就导致程序在根本运行的时候是无法启动起来的。

  2. 在执行代码的时候出现了异常状况, 具体表现是程序的语法本身并没有问题, 但是在运行过程当中, 由于碰上了意料之外的数据内容, 从而导致程序直接崩溃。

我们今天学习的, 是关于try这个部分的详细内容。

只解决: 运行出现异常, 使得应用程序发生错示, 但整体状况是没有达到崩溃的程度。

常见异常场景:

一旦用户输入了文字内容, 系统方面就会立刻抛出错误提示进行报错。

当我们去读取一个根本不存在的那个文件的时候, 系统就会直接抛出那个报错的信息出来。

当出现除数等于零的情况的时候, 程序就直接提示报错。

当从列表里面去取值的时候, 如果取值的下标超过了这个列表现有的范围, 那么就会引发错误。

二、这玩意儿啊, 就是特别、特别万能的那个核心语法知识, 你必须得把它死死地记住, 并且背下来。

try:

存在这样的风险代码, 它们是有可能出现报错的情况的。

pass

:

报错之后执行的补救代码

pass

这个逻辑方面, 其实是非常简单的。

  1. 先试一下在执行, 发现代码没有问题, 所以就顺顺利利地跑完了。

  2. 一旦在 try 代码块里面出现了报错, 就会立刻停止当前的运行流程, 并且跳转到指定的处理逻辑去继续执行, 这样一来, 程序就不会因为错误而崩溃。

三、对于新手的第一课来说, 我们可以从最简单的防崩溃案例开始看。

场景:输入数字,输错不闪退

没有异常处理(会崩溃)

通过input函数的调用结果, 也就是在屏幕上显示的写着请输入数字的这段文字, 经过转换成整数类型之后的值, 被赋值给了num这个变量名。

print("你输入的数字是", num)

如果直接把字母输进去的话, 程序会马上出现红色的字然后停止运行。

把 try-加上去, 因为这样可以做到永远都不会崩溃。

try:

通过input函数的调用结果, 也就是在屏幕上显示的写着请输入数字的这段文字, 经过转换成整数类型之后的值, 被赋值给了num这个变量名。

输出的是"输入成功!数字是: "这个说法, 接着是变量`num`里面存放的那个数值。

:

输出提示, 内容为输入错误后请重新键入数字字符。

当发生错误时, 系统不会崩溃, 也不会出现闪退的情况。它会给出友好提示, 让程序能够继续运行下去。

四、把指定的那个错误给精准地捕获到, 这是企业标准写法。

官方的规范明确指出, 千万不要进行裸露的操作, 而是要实现精确捕捉错误的功能。

  1. 这个错误的值问题存在, 并且它是最为常见的那样一种情况。

输入的类型是不对的, 或者在进行类型转换这个操作的期间失败了。

try:

让一个变量去接受这个叫age的东西, 然后用整数的方式来把那个从键盘里读出来的文字给弄好, 这个行为呢, 是要让人们知道这是在输入年龄的这个信息。

:

输出一个这样的提示语, 意思就是, 必须要输入一个整形的数字, 绝对不能输入文字内容, 具体表现是通过print函数来打印出一句话。

  1. 除零错误

try:

res = 10 / 0

:

print(" 数学错误:除数不能为0")

  1. 那个被指定的文件, 它是并不存在的一个状态。

完美解决上节课文件批量读取报错

try:

变量 f 被设定为打开一个名为 abc.txt 的文件, 读取模式为只读, 并且指定使用的字符编码格式是要 utf-8。

:

print(" 文件不存在,跳过读取")

五、完整四件套:try + + else + (全套终极结构)

工作项目全部都使用了这套体系, 是非常规范的。

去试一试, 动手操作一下。

如果出现了错误, 那么就开始进行执行。

  • else: 在没有发生任何错误的情形之下, 才会被予以执行。

不管这个情况到底是不是存在错误, 在程序的运行顺序里, 它都是在最后那个环节里面去无条件地执行。

try:

num = int(input("输入数字:"))

:

print(" 输入有误")

else:

把打印功能启动, 内容是, 输入的情况属于正确状态, 随后跟上你的数字这个内容, 具体的数值由变量num来确定。

:

print("------本轮输入结束------")

四件套使用场景

  1. 只有在出现正确答案的情况下, 才会执行计算操作, 并且完成数据保存以及将数据存储到数据库中的步骤。

  2. 先把文件给关掉, 顺便把连接也断开, 最后把这些收尾性的操作给做完。

六、获取那些详细的报错信息,这个可是用来排错的神器。

作为在工作过程中去排查问题所必不可少的一种资料, 需要将导致错误的具体原因内容进行打印输出操作。

try:

10 / 0

as e:

print("详细错误原因:", e)

这是一个用来万能捕获所有异常的处理方式, 主要是为了起到一个兜底下的保护作用。

七、这是一个实战当中的大的案例, 就是把那个待办事项的系统给进行改造, 改造成那种永远都不会出现闪退状况的版本。

在第71讲我们提到了待办系统这件事, 现在我们把异常处理这个部分给它加上去, 这样一来呢, 那个程序就会变得特别稳当, 能够达到商业级别的要求和标准了。

解决:用户乱输入导致程序崩掉

=

while True:

print("\n1.添加任务 2.查看任务 3.退出")

try:

= int(input("请选择功能:"))

如果是等于一这种情况。

t = input("输入任务:")

.(t)

print("添加成功")

elif == 2:

打印出来这个任务列表的情况是这样子的。

elif == 3:

print("退出系统")

break

else:

print("请输入1-3的数字")

:

提示非法输入, 仅可录入数字数据!

不管用户怎么样去胡乱地输入一些东西, 这个程序都永远不会出现崩溃的情况。

八、这节课的核心要点总结, 也就是那个超级简单好记的口诀。

  1. try: 把可能会冒出错误问题的代码放置到这里面。

  2. 进行报错补救, 并且防止发生系统崩溃。

  3. 只有在上层的条件判定没有出现错误的情况下, 这个环节才会被启动。

  4. 不管怎么样, 它都是会被实施下去的。

  5. 就是那三个方面, 也就是出现得最经常的三种错误。

九、什么时候必须加 try-?

  1. 关于用户提交交互这个代码这件事。

  2. 进行文件的读取与写入操作, 以及对文件进行批量的遍历处理。

  3. 爬虫网络请求

  4. 把数据进行转换, 然后针对数据进行批量的处理操作。

  5. 长时间运行的自动化脚本

课后作业

  1. 编写一个用于进行除法运算的计算程序, 该程序需要获取两个数字作为输入, 并将这两个数字执行相除的操作。

  2. 需要增加对异常情况的处理机制。

在输入文字提示的时候, 出现了错误的情况。

当除数为零时, 需要单独提示。

  1. 不管是谁, 要是乱输入一堆内容, 都必须得要确保系统绝对不能出现闪退的这个情况。
相关推荐
wuyk55530 分钟前
Spider-第07讲-JSON接口与正则提取
爬虫·python·json
2601_967987371 小时前
Sqlite参考手册
数据库·python·sqlite·api·教程
用户019027581612 小时前
A 股到价提醒机器人:AlphaFeed + 飞书/钉钉 Webhook
python
特立独行的猫A2 小时前
Ionic + 仓颉语言的 cj-tauri 开发框架实战:开发精美移动端 APP
java·后端·python
高洁012 小时前
数据同化与动态状态估计:让孪生持续贴合现实
人工智能·python·深度学习·transformer·迁移学习
通信仿真爱好者3 小时前
第【139】期--基于深度学习的OFDM信道估计方法研究--python完整代码
python·深度学习·ofdm·信道估计
威哥爱编程3 小时前
模拟面试智能体开发实战 07:答完一题就点评一题,结构化输出给分建议,让每道题都变成复盘
python·agent·harmonyos
cpolar技术支持3 小时前
中文文件名排序跟拼音对不上:os.listdir 返回的是文件系统顺序,三个中文名按字节排结果正好相反
python·文件系统·cpolar·编码·排序
Thanks_ks3 小时前
【第 008 讲】在终端中运行 Python 程序:交互模式与脚本模式 | 绝对路径与相对路径 | 以模块方式运行 | 常见报错的识别与排查
python·异常处理·终端·脚本·命令行·cmd·python 解释器