python中的异常(try)

发布时间:2019-08-25 09:34:29编辑:auto阅读(1082)

    1.异常
    程序在运行的时候,如果python解释器遇到一个错误,会停止程序的执行,
    并且提示一些错误的信息,这就是异常
    我们在程序开发的时候,很难将所有的特殊情况都处理,
    通过异常捕获可以针对
    突发事件做集中处理,从而保证程序的健壮性和稳定性

    在程序开发中,如果对某些代码的执行不能确定(程序语法完全正确)
    可以增加try来捕获异常

    try这个关键字来捕获异常
    try:
    尝试执行的代码
    except:
    出现错误的处理

    try:

    不能确定正确执行的代码

    num = int(input('请输入一个数字:'))

    except:
    print('请输入正确的整数')

    #num = int(input('Num:'))
    print('' 50)

    2.
    需求:
    1.提示用户输入一个整数
    2.使用8来除以用户输入的整数

    try:
    尝试执行的代码
    except 错误类型1:
    针对错误类型1,对应的代码处理
    except 错误类型2:
    针对错误类型2,对应的代码处理

    try:
    num = int(input('请输入一个整数:'))
    result = 8 /num
    print(result)
    #except ZeroDivisionError:
    #print('0不能做除数')
    except ValueError:
    print('输入的值不是合法的整数')
    except Exception as r:
    print('未知错误 %s' %(r))
    #没有预先判断到的错误怎么办?
    #ZeroDivisionError
    finally:

    无论是否有异常,都会执行的代码

    print('%%%%%%%%%%%%%%%')

    #ValueError

    3.异常的传递

    def demo1():
    return int(input('请输入整数:'))

    def demo2():
    return demo1()

    #函数的错误:一级一级的去找,最终会将异常传递到主函数里去的
    #try:
    #print(demo2())
    #except Exception as r:
    #print('未知错误 %s' %r)
    print(demo2())

    04.主动抛出异常
    需求:提示用户输入密码 如果长度小于8 就抛出异常

    def input_passwd():
    #1.提示用户输入密码
    pwd = input('请输入密码:')
    #2.判断密码的长度
    if len(pwd) >=8:
    return pwd
    #3.如果<8就主动抛出异常
    print('主动抛出异常')
    #a.创建异常对象
    ex = Exception('密码长度不够')
    #b.主动抛出
    raise ex
    #注意:只抛出异常而不捕获异常 代码会出错
    try:
    print(input_passwd())
    except Exception as re:
    print(re)

    5.断言

    可以理解为提前预言 让人更好的知道错误的原因

    def func(num,div):
    assert (div !=0),'div不能为0'
    return num/div

    print(func(10,0))

关键字