Day03-python异常处理

一、异常处理

在程序运行时出现的错误,使用对应方法时没有按照开发语言的要求使用

一旦出现错误,会中断代码的执行。

实际开发中需要对异常问题单独判断处理,保证程序能持续运行

捕获到异常后根据需求处理,也可以不处理

1-1 常见异常

索引错误
  • 索引下标异常,一般发生在数据取值

字典key值错误
  • key值错误 字典取值时错误

类型错误
  • 类型错误 多个数据进行计算时或出现的问题

文件错误
  • 读取文件时问价不存在

# 索引下标取值错误
data = 'itcast'
data[100]
​
# 字典取值错误
data = {'name':'张三'}
data['age']
​
# 类型错误
data = '100'
data2 = 10
data3 = data/data2
​
# 文件读取错误 路径不存在
with open('aaa.txt','r',encoding='utf-8') as f:
    f.read()

1-2 异常捕获

通过语法捕获代码中的异常,根据异常信息,解决异常的问题,保证代码能持续运行

  • 格式

try:
    需要捕获遗产干的代码片段,有开发人员自己决定哪些代码需要捕获
except:
    捕获到异常后处理的逻辑
# 进行异常捕获
try:
    # 把出现的错误的代码逻辑放入try的作用域中
    data = 15/0
except:
    # 捕获到异常处理的业务逻辑
    print('异常被捕获')
# 异常被捕获后,可以正常执行后续的逻辑
print('其他代码逻辑')

1-3 指定异常类型捕获

# 可以捕获所有异常
try:
    data_str = 'itcast'
    # data_str[100]
    f = open('aasd.txt','r',encoding='utf-8')
except:
    # 捕获到异常处理的业务逻辑
    print('异常被捕获')
    # 异常被捕获后,可以正常执行后续的逻辑
print('其他代码逻辑')
​
# 捕获固定的异常 处理固定错误
try:
    # data = 15/0
    # f = open('aasd.txt', 'r', encoding='utf-8')
    data_str='itcast'
    data_str[100]
# 捕获指定异常
except (FileNotFoundError,ZeroDivisionError,IndexError):
    print('捕获0为除数的异常')
print('其他代码逻辑')

1-4 异常的其他处理

可以在处理异常时编写没有异常的逻辑

try:
    data = 15/0
    # Exception as e 获取异常的错误信息
    # 可以捕获到异常后输出错误信息
except Exception as e:
    print('异常被捕获')
    print(e)
else:
    print('else  没有异常逻辑')
finally:
    print('finally :无论是否有异常都执行')

1-5 函数中的异常处理

  • 在调用函数时进行异常捕获

def func(a,b):
​
    data = a + b
    print(data)
​
try:
    # 调用其他开发人员编写的代码处理线错误
    func('10',20)
except Exception as e:
    print(e)
​
  • 封装函数时异常捕获

# 函数的异常处理
def func(a, b):
    data = 0
    # 在封装的函数内捕获异常
    try:
        data = a + b
    except:
        # 函数内自己处理异常
        print('异常错误')
    return data
​
​
# 调用函数时,捕获函数执行的异常
func(10,'20')
​
  • 函数内捕获到异常不处理,在传递给掉用函数的地方

# 函数的异常处理
def func(a, b):
    data = 0
    # 在封装的函数内捕获异常
    try:
        data = a + b
    except:
        # 将异常的错误信息传递到调用地方 当前没有处理异常
        raise Exception('函数内计算错误')
    return data
​
​
​
# 调用函数时,捕获函数执行的异常
try:
    func(10,'20')
except Exception as e:
    print('异常捕获')
    print(e)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值