python#异常

前言

异常

try:
    #提示用户输入一个数
    num = int(input("请输入数字"))

except:
    print("请输入正确的数字")

多错误类型,

1.获取错误类型

num = int(input("请输入一个整数"))

# 使用8除以用户输入的整数并输出
result = 8 / num

print(result)

-----------------------
输出:
请输入一个整数a
Traceback (most recent call last):
  File "/Users/rcefcn/Python/oop_面向对象/09_异常1.py", line 1, in <module>
    num = int(input("请输入一个整数"))
ValueError: invalid literal for int() with base 10: 'a'

当 Python 解释器 抛出异常 时,最后一行错误信息的第一个单词,就是错误类型

所以发现没?这个错误异常就是他 ValueError:改写后就变成了

try:
    num = int(input("请输入一个整数:"))

    # 使用8除以用户输入的整数并输出
    result = 8 / num

    print(result)
except ValueError:
    print('给老子输入数字')
except ZeroDivisionError:
    print('分母不能为0哦')

未知错误

try:
    num = int(input("请输入一个整数:"))

    # 使用8除以用户输入的整数并输出
    result = 8 / num

    print(result)
except ValueError:
    print('给老子输入数字')
except Exception as aa:
    print('未知错误%s ' % aa)

异常的正常语法流程

try:
    num = int(input("请输入一个整数:"))

    # 使用8除以用户输入的整数并输出
    result = 8 / num

    print(result)
except ValueError:
    print('给老子输入数字')
except Exception as aa:
    print('未知错误%s ' % aa)
else:
    # 只有没错时候,才会执行
    print("尝试成功时,执行")
finally:
    # 不管有没有错,都会执行
    print("无论是否输出完成都会执行")

print("_"*50) # 补货异常代码输出完就会继续运行

异常的传递性

最终异常会传递到主函数
所以,异常最后在主函数捕获就好
代码如下

def demo1():
    return int(input("要不要输入一个看看:"))


def demo2():
    return demo1()


# 利用异常的传递性,在主函数捕获异常
try:
    print(demo2())
except Exception as a:
    print("捕获异常%s " % a)

主动异常抛出

比方,输入密码,如果少于8,是异常,抛出密码长度的异常
抛出 raise 异常

def input_password():

    # 1.提示用户输入密码
    pwd = input("请输入密码:")
    # 2. 判断密码是否大于>=8 , 返回用户输入的密码
    if len(pwd) >= 8:
        return pwd
        # 3.如何< 8 主动抛出异常

    # 1.创建异常对象
    ex = Exception('密码长度不够')
    # 2.主动抛出异常
    raise ex

# 提示用户输入密码
try:
    input_password()
except Exception as result:
    print(result)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值