Python异常捕获

异常捕获

1、什么是异常

程序执行过程中出现错误,也叫出现异常。

2、异常捕获

让本来会出现异常的位置,不出现异常,而是自己去处理异常出现的情况。

3、怎么捕获异常

a.情况一:捕获所有的异常

语法1:
try:
    代码段1
except:
    代码段2
执行过程:执行代码段1 如果代码段1中出现异常,不会崩溃,而是马上执行代码段2;如果代码段1没有异常,不会执行代码段2。

示例:

try:
    print('~~~~~~~~~')
    print([1, 2, 3][10])
    print('+++++++')
except:
    print('出现异常!')

b.情况二:捕获指定的异常

语法:
try:
    代码段1
except 错误类型名:
    代码段2
执行过程:执行代码段1,当代码段1出现指定类型的异常后不崩溃,而是执行代码段2。

示例:

try:
    print([1, 2, 3][10])
    print(int('abc'))
    print('~~~~~~~~~~')
    print('+++++++')
except IndexError:
    print('下标越界!')

c.情况三:同时捕获多个异常,对不同的异常做出相同的反应。

语法:
try:
    代码段1
except (错误类型1, 错误类型2, 错误类型3...):
    代码段2
执行过程:执行代码段1,当代码段1中出现了指定的异常,不崩溃,然后执行代码段2。

示例:

try:
    print({'a': 1}['b'])  # KeyError
    print(int('abc'))  # ValueError
    print([1, 2, 3, 4][10])  # IndexError
except (IndexError, KeyError, ValueError, FileNotFoundError, StopIteration):
    print('出现多种异常中的一个!')

d.情况四:同时捕获多个异常,对不同的异常做出不同的反应。

语法:
try:
    代码段1
except 错误类型1:
    代码段2
except 错误类型2:
    代码段3
    ...
except 错误类型n:
    代码段n

示例:


try:
    print({'a': 1}['b'])  # KeyError
    print(int('abc'))  # ValueError
    print([1, 2, 3, 4][10])  # IndexError
except IndexError:
    print('出现IndexError异常!')
except KeyError:
    print('出现KeyError异常!!')
except ValueError:
    print('出现ValueError异常!')
except FileNotFoundError:
    print('出现FileNotFoundError异常!')
except StopIteration:
    print('出现StopIteration异常!')

4、try - except - finally关键字

语法:

try:
    代码段1
except 错误类型:
    代码段2
finally:
    代码段3

说明:不管代码段1中是否出现异常,也不管异常是否能够被捕获到
finally后面的代码段3都会执行。

5、什么时候使用异常捕获

明明知道某段代码可能会出现异常,但是又没有办法避免,就使用异常捕获。

三、抛出异常

抛出异常:主动让程序出现异常

语法:

  • raise 错误类型 - 程序执行到raise语句的时候直接抛出异常

**注意:**错误类型必须是一个类,并且这个类是Exception的子类。

示例:

# 输入年龄 如果输入的年龄范围不在0 ~ 100 程序就崩溃
class AgeError(Exception):
    def __str__(self):
        return '年龄越界了!'


age = int(input('请输入年龄(0 ~ 100):'))
if 0 <= age <= 100:
    print('年龄是:', age)
else:
    raise AgeError
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值