22-python异常
创始人
2024-02-06 22:22:27
0

异常

  • 一. 了解异常
  • 二. 异常的写法
    • 2.1 语法
    • 2.2 快速体验
    • 2.3 捕获指定异常
      • 2.3.1 语法
      • 2.3.2 体验
      • 2.3.3 捕获多个指定异常
      • 2.3.4 捕获异常描述信息
      • 2.3.5 捕获所有异常
    • 2.4 异常的else
    • 2.5 异常的finally
  • 三. 异常的传递
  • 四. 自定义异常
  • 五. 总结

一. 了解异常

当检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的"异常"。

例如:以r方式打开一个不存在的文件。

open('test.txt', 'r')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JN1xVHzN-1669033742666)(01-异常.assets/image-20190305154200725.png)]

二. 异常的写法

2.1 语法

try:可能发生错误的代码
except:如果出现异常执行的代码

2.2 快速体验

需求:尝试以r模式打开文件,如果文件不存在,则以w方式打开。

try:f = open('test.txt', 'r')
except:f = open('test.txt', 'w')

2.3 捕获指定异常

2.3.1 语法

try:可能发生错误的代码
except 异常类型:如果捕获到该异常类型执行的代码

2.3.2 体验

try:print(num)
except NameError:print('有错误')

注意:

  1. 如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。
  2. 一般try下方只放一行尝试执行的代码。

2.3.3 捕获多个指定异常

当捕获多个异常时,可以把要捕获的异常类型的名字,放到except 后,并使用元组的方式进行书写。

try:print(1/0)except (NameError, ZeroDivisionError):print('有错误')

2.3.4 捕获异常描述信息

try:print(num)
except (NameError, ZeroDivisionError) as result:print(result)

2.3.5 捕获所有异常

Exception是所有程序异常类的父类。

try:print(num)
except Exception as result:print(result)

2.4 异常的else

else表示的是如果没有异常要执行的代码。

try:print(1)
except Exception as result:print(result)
else:print('我是else,是没有异常的时候执行的代码')

2.5 异常的finally

finally表示的是无论是否异常都要执行的代码,例如关闭文件。

try:f = open('test.txt', 'r')
except Exception as result:f = open('test.txt', 'w')
else:print('没有异常,真开心')
finally:f.close()

三. 异常的传递

体验异常传递

需求:

​ 1. 尝试只读方式打开test.txt文件,如果文件存在则读取文件内容,文件不存在则提示用户即可。

​ 2. 读取内容要求:尝试循环读取内容,读取过程中如果检测到用户意外终止程序,则except捕获异常并提示用户。

import time
try:f = open('test.txt')try:while True:content = f.readline()if len(content) == 0:breaktime.sleep(2)print(content)except:# 如果在读取文件的过程中,产生了异常,那么就会捕获到# 比如 按下了 ctrl+cprint('意外终止了读取数据')finally:f.close()print('关闭文件')
except:print("没有这个文件")

四. 自定义异常

在Python中,抛出自定义异常的语法为 raise 异常类对象

需求:密码长度不足,则报异常(用户输入密码,如果输入的长度不足3位,则报错,即抛出自定义异常,并捕获该异常)。

# 自定义异常类,继承Exception
class ShortInputError(Exception):def __init__(self, length, min_len):self.length = lengthself.min_len = min_len# 设置抛出异常的描述信息def __str__(self):return f'你输入的长度是{self.length}, 不能少于{self.min_len}个字符'def main():try:con = input('请输入密码:')if len(con) < 3:raise ShortInputError(len(con), 3)except Exception as result:print(result)else:print('密码已经输入完成')main()

五. 总结

  • 异常语法
try:可能发生异常的代码
except:如果出现异常执行的代码
else:没有异常执行的代码
finally:无论是否异常都要执行的代码
  • 捕获异常
except 异常类型:代码except 异常类型 as xx:代码
  • 自定义异常
# 1. 自定义异常类
class 异常类类名(Exception):代码# 设置抛出异常的描述信息def __str__(self):return ...# 2. 抛出异常
raise 异常类名()# 捕获异常
except Exception...

相关内容

热门资讯

旅行的唯美句子 关于旅行的唯美句子 (精选165句)  在平时的学习、工作或生活中,大家都对那些朗朗上口的句子很是熟...
优美语句 精选优美语句大全  生活的无奈,有时并不源于自我,别人无心的筑就,那是一种阴差阳错。生活本就是矛盾的...
温暖亲情的句子 关于温暖亲情的句子  亲情,顾名思义,就是亲人的情义。人,作为社会的人,起首并每每接触的是哺育本人的...
晚上发朋友圈的好句子 关于晚上发朋友圈的好句子大全  在平日的学习、工作和生活里,大家都听说过或者使用过一些比较经典的句子...
经典朋友圈早安文案 经典朋友圈早安文案汇总(精选140句)  每一个人只要心里有山巅,即使道路再曲折,也能够到达人生的顶...
调侃男友俏皮句子 调侃男友俏皮句子 (精选85句)  在日常的学习、工作、生活中,大家总免不了要接触或使用句子吧,根据...
打动人心的正能量句子 打动人心的正能量句子  在日常学习、工作或生活中,大家最不陌生的就是句子了吧,根据结构的不同句子可以...
哀悼逝者的句子 哀悼逝者的句子(精选140句)  在平时的学习、工作或生活中,大家一定都接触过一些使用较为普遍的句子...
最新美到极致的惊蛰节气句子 最新美到极致的惊蛰节气句子(精选110句)  在日常学习、工作或生活中,大家都接触过很多优秀的句子吧...
曾经爱情的句子有哪些 关于曾经爱情的句子有哪些  1、曾经,在那个花季的年代,你突然出现在我面前,信诺誓言的对我说,你爱我...
表达兄弟情深的句子 关于表达兄弟情深的句子  在平日的学习、工作和生活里,许多人对一些广为流传的句子都不陌生吧,句子是能...
高情商发圈被秒赞的句子正能量 高情商发圈被秒赞的句子正能量  在平平淡淡的日常中,大家都接触过比较经典的句子吧,句子是能够表达一个...
悼念去世亲人的句子 悼念去世亲人的句子  在日常学习、工作抑或是生活中,大家肯定对各类句子都很熟悉吧,句子能表达一个完整...
七月你好的唯美句子 七月你好的唯美句子  在生活中,我跌倒过。我在嘲笑声中站起来,虽然衣服脏了,但那是暂时的,它可以洗净...
对某人失望心寒的句子 对某人失望心寒的句子(精选120句)  失望,有时候也是一种幸福,因为有所期待所以才会失望。因为有爱...
杨绛我们仨句子赏析 杨绛我们仨句子赏析  《我们仨》是2004年7月生活·读书·新知三联书店出版的图书,作者是杨绛。下面...
唯美心情句子 2022年常用唯美心情句子汇总90句  原来和文字沾上边的孩子从来都是不欢乐的,他们的欢乐象贪玩的小...
常用早安共勉句子微信 常用早安共勉句子微信大合集41句  人生如车,或长途,或短途;人生如戏,或喜,或悲。很多事,过去了,...
感恩父母恩情的句子 关于感恩父母恩情的句子大全  无论在学习、工作或是生活中,大家最不陌生的就是句子了吧,句子是能够表达...
早上发朋友圈正能量的句子   生活没有真正的完美,只有不完美才是最真实的美;生活没有一帆风顺的,只有披荆斩棘才能路路顺;生活没...