Python基础入门篇【36】-python初识异常及常见的异常类型

前言
作者简介:短尾巴小鳄鱼 ,一位不放弃自己的上进卷妹
💬 如果文章知识点有错误的地方,请留言指正~和大家一起学习,一起进步
💬 人生格言:昨日种种,皆成今我。今日种种,方成新我。切莫踌躇,莫停留,莫沉溺💬
如果感觉博主的文章还不错的话,还请关注、点赞、收藏三连支持一下博主哦

python初识异常

什么是异常?

异常就是错误,我们把代码的错误叫做异常的抛出

异常会导致程序崩溃并停止运行

我们需要处理这些异常才能保证程序继续正常运行

如何处理异常?

通过监控并捕获到异常,将异常部位的程序进行修理使得程序继续正常运行

处理异常的语法:

try:
    <代码块>  # 此为被try关键字监控并保护的业务代码块
except <异常的类型><异常处理代码块>  # 上面的代码块出现错误后执行的代码块

程序在执行try中的代码块时,如果不会出错,将不会走到except下的代码块。

例子:

之前学过upper()函数是将字母大写,它接收的参数必须是个字符串类型,否则会报错。

用异常来捕获这个错误,并处理一下,使程序不要直接报错,而是给一个相对友好的提示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JnTUuGQp-1659154207078)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220730111836150.png)]

捕获通用异常

无法确定是哪种异常的情况下使用的捕获方法

try:
    <代码块>
except Exception as e:
    <异常处理代码块>

注意:这个语法是固定的 Exception 是一个类,里面包含了浩瀚的异常库。as e相当于将 Exception 重命名为e

例子:

用通用异常的方式来返回上面例子中的异常原因:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NnJKpInL-1659154207080)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220730113024396.png)]

捕获具体异常

确定是哪种异常的情况下使用的捕获方法

如果我们确定异常是哪种类型,就要使用具体异常的方法去捕获,这样比使用通用异常要更加节省性能(因为通用异常需要从浩瀚的异常库里查找这次出现的异常是什么类型。)

try:
    <代码块>
except <具体的异常类型> as e:
    <异常处理代码块>

例子:

我们已知0被做为除数的异常类型是ZeroDivisionError,用这个异常类型去捕获0被做为除数出现的异常:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JbCxaIpi-1659154207082)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220730113630984.png)]

捕获多个异常

程序处理过程中,很可能会出现多个异常,而且异常的类型不相同。

当然使用通用异常类型是可以捕获的,但我们知道使用具体异常可以节省性能,那么怎么做呢?

第一种方法:

try:
    <代码块>
except <异常类型1> as e:
    print(e)
except <异常类型2> as e:
    print(e)
...

注意:当except代码块有多个的时候,当捕获到一个异常后,不会再继续往下捕获

第二种方法:推荐使用这种

try:
    <代码块>
except (<异常类型1>, <异常类型2>) as e:  # 用元组的形式将多个异常类型包裹起来
    print(e)

例子:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6xMzFgVA-1659154207083)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220730114837544.png)]

常见的异常类型

异常名称描述
Exception通用异常类型(基类)
ZeroDivisionError不能整除0
AttributeError对象没有这个属性
IOError输入输出操作失败
IndexError没有当前的索引
KeyError没有这个键
NameError没有这个变量(未初始化对象)
SyntaxErrorpython语法错误
SystemError解释器的系统错误
ValueError传入的参数错误

下面举几个例子:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qhKZMDzQ-1659154207083)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220730120944320.png)]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值