博客目录

  • 传送门
  • 正文

传送门

无字天书之Python第一页
无字天书之Python第二页
无字天书之Python第三页
无字天书之Python第四页
无字天书之Python第五页
无字天书之Python第六页
无字天书之Python第七页
无字天书之Python第八页
无字天书之Python第九页
无字天书之Python第十页

正文

前面我们已经写了这么多示例代码了,对于报错信息各位同学可能都已经司空见惯了,今天我们就来聊一下报错信息的处理。
首先,程序在运行的过程中,产生了异常,这时,我们可能会有两种想法,第一种是针对这个异常做某些特殊的处理来进行程序的降级处理;第二种是希望程序忽略这个异常继续执行下去,这个异常可能并不干扰主逻辑的执行。

那这个时候我们怎么办呢?

有编程经验的同学马上就想到了,那我们去 try 它啊,在 Python 中,我们同样可以去 try 它,从字面意思上理解就已经非常清晰明确了,以下的内容是要尝试执行的。

语法

try:...(可能产生异常的代码)
except:...(产生异常后的处理代码)

但是,还会有一种情况,不管上面的代码有没有出错,有一部分代码我们总希望它能执行,这时,我们可以添加另一个关键字 finally 。

从字面意思可以就可以看出来,这个是最后要执行的意思。

语法

try:...(可能产生异常的代码)
except:...(产生异常后的处理代码)
finally:...(一定要执行的代码)

拟定场景:我们定义一个除法函数,如果除数不为 0 ,是可以正常返回值的,如果除数为 0 ,那么整个程序肯定会直接异常报错。

def chufa(x,y):try:return x / yexcept:print('错误')return None
print(chufa(15,5)) #3.0

结果为:3.0
这个时候程序是正常输出的,这时我们修改参数

print(chufa(15,0)) #错误 None

结果为:错误 None
可以看到,这里打印了我在程序中设置的 None ,并没有之前的红色的异常信息抛出。这里的 except 会捕捉我们所有的异常信息,但是,异常信息也是有很多分类的,比如我们之前遇到过的访问字典中不存在的 key 的异常 KeyError ,比如我们刚才捕捉到的 ZeroDivisionError 异常,还有也是我们之前遇到过的数组下标越界的异常 IndexError

比如这里的代码我可以捕捉更加详细的异常信息 ZeroDivisionError

def chufa(x,y):try:return x / yexcept ZeroDivisionError:print('错误')return Noneprint(chufa(15,5)) #3.0
print(chufa(15,0)) #错误 None

结果一样
那么,看到这里,你可能会有一个疑问,我们为什么要对异常分类,直接抓取所有异常不是更方便么?

当然,对于逻辑比较简单的程序,直接捕捉所有异常是更方便的,但是在某些特定的业务场景下,一段程序可能会抛出多种异常,我们希望根据异常种类的不同,定制不同的解决方案,至少我们知道当前的程序是抛出了什么异常,这时,程序异常分类就显得尤为重要。

我们这里演示一下,如果我们输出的值不是数字,是字符串的话。。。。

def chufa2(x,y):try:return x/yexcept ZeroDivisionError:print('输入的除数为0!')return Noneexcept TypeError:print('类型错误!')return None
print(chufa2('only老K',0))

结果:

类型错误!
None

对的,你没有看错,异常信息是能捕捉多个的,是可以并排写的。至于先抛出那个,就要看那个异常先发生了。
上面我们还提到了 finally ,我们接着来演示 finally 这个关键字的使用。

def chufa3(x,y):try:return x/yexcept ZeroDivisionError:print('您输出的除数为 0 !!!')return Noneexcept TypeError:print('您输出的参数类型非法!!!')return Nonefinally:print('only老K,我为自己带盐')print(chufa3(15,3))
print(chufa3('only老K',0))

结果:

only老K,我为自己带盐
5.0
您输出的参数类型非法!!!
only老K,我为自己带盐
None

无字天书之Python第十一页(异常处理)相关推荐

  1. 无字天书之Python第十三页(生成器基础)

    博客目标 传送门 正文 传送门 无字天书之Python第一页 无字天书之Python第二页 无字天书之Python第三页 无字天书之Python第四页 无字天书之Python第五页 无字天书之Pyth ...

  2. 无字天书之Python第五页(基础运算符)

    博客目标 传送门 基础运算符(六大类) 算术运算符 比较运算符 赋值运算符 并列赋值问题 逻辑运算符(三种) 成员运算符 身份运算符 函数id() 本周第二更 一支预防针打给你,全文内容较长,花点时间 ...

  3. 无字天书之Python第八页(基础数结构—下)

    文章内容 传送门 前言 dict 简单使用 CURD 内置函数和方法讲解 set 简单使用 集合的CRUD 内置函数和方法 过年不停更之第二更... 内容比较长,耐心看耐心写,小编也不容易...... ...

  4. 无字天书之Python第四页(变量基础)

    blog 传送门 变量 变量基础 变量类型转换 全部代码 本周第一更 传送门 无字天书之Python第一页 无字天书之Python第二页 无字天书之Python第三页 变量 不懂什么是变量的自己翻到第 ...

  5. 无字天书之Python第十页(基本文件操作)

    博客目标 传送门 绝对路径和相对路径 打开文件 编码格式 OS模块 传送门 无字天书之Python第一页 无字天书之Python第二页 无字天书之Python第三页 无字天书之Python第四页 无字 ...

  6. 无字天书之Python第六页(条件判断与循环)

    内容大体 传送门 条件判断 if-else if-elif-else 分支语句嵌套 循环语句 简单while while死循环 for循环 range()函数 循环中断 break continue ...

  7. 无字天书之Python第七页(基础数据结构—上)

    博客内容 传送门 前言 list列表 list列表的基本操作 通过索引取出列表的元素 列表连接 列表循环遍历 for while 查看list中是否有某个元素 删除列表以及列表中的值 获取最大值 li ...

  8. 无字天书之Python第三页(字符串内容)

    blog内容 前言 传送门 字符串 字符串常用方法 获取字符串的长度 字符串拼接 重复输出字符串 获取字符串中的某一个字符 获取字符串中的某一串字符 包含字符串和不包含字符串 代码示例 前言 现在开始 ...

  9. 无字天书之Python爬虫第一页

    博客内容 主体 什么是爬虫? 为什么要用爬虫? 各路神仙没有丝毫反馈啊-小编更新的没有动力了啊 许久不见,并不是被感染了,别怕啊,咱不会隔着电脑把你传染了... 放在CSDN草稿箱中太久了-拿出来更新 ...

最新文章

  1. Distilling the Knowledge in a Neural Network 论文笔记蒸馏
  2. c语言程序头文件作用,C语言头文件
  3. U盘安装Centos6.3 续
  4. ThinkPHP函数详解:M方法
  5. 老大难的空指针,如何优雅处理?
  6. iphone计算机快捷键,苹果电脑快捷键大全,最常用的都在这里了
  7. BZOJ2843:极地旅行社
  8. 爬虫521错误(又是一次和可爱的前端vs的故事)
  9. Linux7/Redhat7/Centos7 安装Oracle 12C_安装Oracle软件_04
  10. ViewBag ViewData
  11. hdu4135容斥原理 组合遍历
  12. antd的select的滚动条怎么才会出现_纵向滚动条对横向滚动条的影响
  13. css宋体代码_CSS字体代码
  14. Filenet路线更新及新版官网上线公告 ​
  15. 嵌入式系统开发环境的构建08:在Hyper-V中安装Windows XP操作系统
  16. 洛谷P5706 【深基2.例8】再分肥宅水__C++描述
  17. 从智能交通案例看物联网成功的关键
  18. CentOS Linux操作系统
  19. Django cache redis 最全介绍
  20. PTA 特立独行的幸福 (25分)

热门文章

  1. 前台Autoform 选择下拉框的值进行判断(js)
  2. 人气最高的缓存中间件:Redis
  3. 网络安全基础之Windows漏洞复现 (MS08-067)
  4. php购物车源代码下载,buy_car.rar
  5. 985选择医学还是计算机?
  6. BZOJ 3070 震波 题解
  7. 什么是 fine-turning?
  8. LC-1237. 找出给定方程的正整数解(相向双指针)
  9. postman 成功,python requests 失败
  10. C++练习17:统计字符串中有多少个单词