python 将“异常”融入到你的代码里

主要针对以下几个问题:

  1. 为什么捕获异常?
  2. 什么是抛出异常?
  3. 错误类型捕获;
  4. 捕获未知类型;
  5. 捕获异常完整语法;
  6. 异常的传递;
  7. 主动抛出异常。

为什么捕获异常

平常编译代码时出现中断,可能想着有着bug,但是如果是一个产品呢,在使用产品的时候,突然一个中断,这不是能经常用网络问题来解释的,捕获异常是为了程序的稳定性和健壮性。

什么是抛出异常

程序停止执行并且提示错误信息 这个动作,我们通常称之为:抛出(raise)异常。

错误类型捕获

当 Python 解释器 抛出异常 时,最后一行错误信息的第一个单词,就是错误类型,以下代码即是输入值可能为字符串或是0时的错误类型捕获。
不能确定正确执行的代码放在try后,错误的处理代码放在except后。

try: 
	num = int(input("请输入整数:")) 
	result = 8 / num print(result) 
except ValueError: 
	print("请输入正确的整数") 
except ZeroDivisionError:
	print("除 0 错误")
	

捕获未知类型

在实际应用中,可能会由于复杂性不能完备的想出全部的异常情况。如果希望程序无论出现任何错误,都不会因为 Python 解释器 抛出异常而被终止,可以再增加一行:

except Exception as result: 
	print("未知错误 %s" % result)
	

捕获异常完整语法

num = 1
# num = 0  # 会出现除0错误
# num = 'a'

try:
    result = 8 / num
except ZeroDivisionError:
    result = 0
    print("除 0 错误")
except Exception as result:
    print("未知错误 %s" % result)
else:
    result = 2
    print("正常执行")
finally:
    print("执行完成,但是不保证正确")
    print(result)

执行结果说明

正常执行:try->else->finally
运行结果为:
在这里插入图片描述

出现除 0 错误:try->except ZeroDivisionError->finally
运行结果为:
在这里插入图片描述
出现未知错误:
在这里插入图片描述

异常的传递

  • 在开发中,可以在主函数中增加异常捕获
  • 而在主函数中调用的其他函数,只要出现异常,都会传递到主函数的 异常捕获 中
  • 这样就不需要在代码中,增加大量的 异常捕获,能够保证代码的整洁

主动抛出异常

需求

  • 定义 input_password 函数,提示用户输入密码
  • 如果用户输入长度 < 8,抛出异常
  • 如果用户输入长度 >=8,返回输入的密码

代码

def input_password():
    pwd = input("请输入密码:")

    if len(pwd) >= 8:
        return pwd

    ex = Exception("密码长度不够")
    raise ex


try:
    user_pwd = input_password()
    print(user_pwd)
except Exception as result:
    print("发现错误:%s" % result)
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙橙小狸猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值